Scheme はそれ自体でプログラミングする言語ではなくてプログラミング言語を作るためのプログラミング言語だとしてみれば、破壊的変更が必要なことに納得できるかと思う。
Conversation
Notices
-
きゅーけー (tojoqk@mastodon.tojo.tokyo)'s status on Thursday, 06-Jan-2022 00:26:07 JST
きゅーけー
-
きゅーけー (tojoqk@mastodon.tojo.tokyo)'s status on Thursday, 06-Jan-2022 00:27:33 JST
きゅーけー
Scheme を言語設計をするのに必要な最小セットだと思えば不思議に思うことはない。
-
きゅーけー (tojoqk@mastodon.tojo.tokyo)'s status on Thursday, 06-Jan-2022 00:33:46 JST
きゅーけー
Common Lisp と Scheme の最大の違いは「関数」と「手続き」の違いかと思います。Common Lisp の関数と Scheme の手続きは役割りが違うんです。Scheme の手続きはプログラミング言語の全ての制御を司る機構です。
末尾呼び出しが最適化されるので、手続きは「繰り返し」を表現するためにも使えますし、任意の位置で継続を手続きとして取り出せるんで、「例外」機構を手続きで作ることができます(call/cc と dynamic-wind の組み合せ)。
Scheme は言語のコアな機能を構文ではなくて手続きとして提供することで、プログラミング言語の拡張性を上げているので、この状況を defmacro と比較するのは難しいのではないかと思います。Scheme では新しい構文を作成するのとは別の方法で言語を拡張できるわけです。
-
きゅーけー (tojoqk@mastodon.tojo.tokyo)'s status on Thursday, 06-Jan-2022 00:36:37 JST
きゅーけー
Scheme について関数型言語の一つだよねって言われると困る感じするんだよな。その側面も確かにあるけど言語を作るための種としての側面の方が圧倒的に上回っているかと……。
-