制約と言えば、Garnet Toolkitを思い出す。
あれもDSL的なアプローチだな。
Lispの場合、DSLなのか、普通のプログラムなのか、
判断付きかねるところがあるが。