@DLosc But yeah, we've definitely considered making one several times. But so far I have no good ideas how such a language would best be structured. I also wonder whether it might be good to build them based on the 2D pattern matching languages (e.g. by extending them with substitution features).
I had the idea of inserting/replacing single characters for the 2D pattern matching languages, but the real challenge will be large-scale transformations, like rotations about a point, reflections or replacing contiguous blocks of a char type with some repeating pattern