どの様な話?
愛機だったMZ80Cのカセットテープで動く、LISP言語での経験しか無いですが、ほぼ動きませんでした。
まず前提として、そのLISP言語は、
- readとかの機能が無い、副作用が無い
- データはリストで(全てを予め)渡す
- リストのcar部を使い、次の処理(関数の再帰)へcdr部を渡す感じ
- 渡されたデータの内容が、関数が必要とする形式(アトムだったりリストだったり、数字だったり文字列だったり)を完全に満たさないと、即apply error。
- 渡されるデータの内容の形式と少しでも離れた、関数の改造をすると、即apply error。
- 明けても暮れてもapply error。
でした。
その場で必要な値を得るread機能が無い、副作用が無い素晴らしい処理系の筈と、普通思うじゃないですか?
そんな事は全く有りません。
入力のデータのリスト構造と、関数の連鎖構造が密着して、少しも融通が利かない状況に不可避でなる様な(どうする事も出来ない、絶望的な)処理系でした。
どうするのが良いか?
- 大データに絡みつく様に関数が実行され、欲しいデータや作りたいデータをその場その場で機動的に、大データの読み書き(副作用) を本質的な実行内容とする様な処理系
こそが、初歩的なLISP言語(関数のチェーンだとかいう議論と同じ様な状況?)を扱う者から見た理想のイメージだったと思います。
結論
もう、初歩的なLISPを使う人もいないでしょうから、今後これでプログラミングが嫌いになる人は出ないでしょう。