出来ない言語ってあるかな?
non-strict関数型言語の場合、letrecが強力にサポートするから、宣言型風に書ける。

letrec x = 1:2:3:x; // 1:2:3:1:2:3:1:2:3:1:2...