JoyでFizzBuzz(3)

もう少し整理してみました。

DEFINE
roll4 == swap [swap [swap] dip] dip;
mkifte == [unitlist swap] dip unitlist swap;
fbq == roll4 [rem 0 =] dip mkifte ifte;
fbnum == dup 15 "FizzBuzz"
[dup 3 "Fizz"
[dup 5 "Buzz" [dup] fbq]
fbq]
fbq popd;
fblist == [fbnum] map;
interval == swap [<=]
[pop [] cons]
[dup [swap] dip succ]
[cons]
linrec.

実際のところ(2)も(3)もgcが動き出すのでリソース使い過ぎなのでしょう(dip依存症)。最初のはそんなことありません。

いっさい代入せずにスタック操作だけでプログラムを作ると「変数、代入」の便利さがよくわかります。