いつも思うのですが、「書き方とプログラムを分離する」ことができれば非常に
綺麗かつ便利になりそうな気がしています。

if((text,back)⊂colors){ … } なのですが、
とりわけ数学でよく考えられた記号は、そのまま持ってきたいが
実際には、そうは行かない
例えば行列計算で
D = A + B * C
とかする場合、OO系言語の場合
D.add( A , B.clone().mul( C ) ) ;
といったことにといった感じになりかねないもので、読みにくいこと極まりないです。
一部の人はこのほうが統一があって読みやすいなんていっていますが、あれは頭が変(←少し煽り)
統一されていることは正しいとは思うのですが(こうすることによる拡張性その他は捨てられない)

  統一されている≠読みやすい

とも思うんですよね。
最近C#をやり始めて「同じ事をするのにやり方が複数個あるのは良くない」はウソだと感じる。
あくまで「統一されている」は拡張性の確保や読みやすさの確保のための手段であって目的ではないと思う。

基本的に糖衣構文を記述する構文のような物という事になるでしょうけれど、
template その他で進化した考え方で諸悪の根源とされていたプリプロセッサを再度見直したらもっと良いものになりそうな気がする。
さらに「書き方とプログラムを分離する」を一般化して考えれば、「オートマトンの絵でそのまま機械つくってくれるやつ」といった、
プリプロセッサの変換元がテキストである必要性も無いような気もします。