まあ、実はある意味、現代的な新型のLispは別として、Schemeって本当はLispの中でも異端児なんでゲソよね。実は正統派じゃない方言だと思うでゲソ。
2013-12-23 18:46:29まあ、一番目はいまやレキシカルスコープの言語が当たり前で違和感感じるかもしれんでゲソが、元々そうなんでゲソよね。CLもレキシカルスコープを「Schemeの後に」導入したでゲソが、やっぱダイナミックスコープを完全には取り去ってないんでゲソよね。
2013-12-23 18:50:03つまり、ある意味Emacs Lispが正統なLisp継承者だとすれば(ってかある意味本当なんでゲソが)やっぱSchemeってヘンなLispでゲソ。
2013-12-23 18:51:082番目もそうで、元々Schemeってマクロをどう導入するのか、ってのは本来の議論の対象じゃなくって、あくまでアクター理論研究の為の処理系なんで、マクロってSchemeの蚊帳の外なんでゲソよね。
2013-12-23 18:52:09もっとも「真面目にマクロを論じた」Lisp処理系ってのはいまだ無いってば無いのかもしれんでゲソが。ただ、CL的な「マクロへの思い」って元々Schemeって目的が違うから持ってない気がするでゲソ。
2013-12-23 18:53:44つまり、ある意味、Schemeだと関数型言語の方面なんかより、OOPとして「拡張して」マクロに頼らずプログラム組む、ってのが本質的な使い方のような気がするんでゲソが、気がするだけなんで気にせんでイイでゲソ(謎
2013-12-23 18:54:53ちなみに、いまだスッキリせんのが、例えば実用Common LispでPeter Norvigが見せたような「オブジェクト指向の単純な実装」とかSICPのデータ駆動型プログラミングとか、ラムダ式使って「スタイル的に」OOP説明するのはまあいいわけでゲソよ。
2013-12-23 18:59:21ただ、これは現象的な「動く/動かない」の話であって、メッセージパッシングとかアクター理論とか、Schemeで言うと末端引数への情報受け渡しと一体「理論的にどう絡んでくるのか」ってのがサッパリ分からんのでゲソね。
2013-12-23 19:01:12そもそもcall/ccの元になってるのが、「継続受け渡し」ってプログラミング技法で、これが元々OOPの理論の「メッセージパッシング」と同じモノなんだ、はぁ、ってなぁイイんでゲソが、あの「現象的な」OOPの単純実装とあんま繋がってないんでシックリ来ないんでゲソ。
2013-12-23 19:02:42何かその辺、理論とかあるんでゲソかね。OOPって言うと「デフォルト定義」(笑)な「クラスがあって、データ隠蔽して、メソッドも持ってる」が跋扈してて、理論的な面がイマイチやっぱ把握出来てないんでゲソよねぇ。
2013-12-23 19:04:01単純な話、継続受け渡しだけでプログラミングすればそれはオブジェクト指向なんでゲソか。いや、んなわけねぇ筈でゲソよねぇ。
2013-12-23 19:06:10@cametan_001 だって実用OOPL界隈、「意味論?型理論?そんなことよりアルゴリズムだ、実装だ」な人多いですし(偏見)
2013-12-23 19:11:59@omasanori まあ多いかどうかはさておき、アクター理論ってのに比べると実装で実際出来たC++はじめとして、多分Smalltalk以外は理論的に突き詰めて作ってみた、っつーより「何となく(概念じゃなくって)アイディア実装出来ちゃいました」ってカンジでゲソよねぇ。
2013-12-23 19:13:55現実のOOP言語とかは、そうなんでゲソよねぇ。理論的な共通理解がある、っつーより「こんなもんだろ」実装で要するに本当の意味でのコンセンサスとかまるで無いんでゲソよね。だからユーザー側で「あれはOOPとは言えない」とか文句が出たりするわけでゲソ。
2013-12-23 19:18:14そもそも「特殊メソッド」ってのがある辺りがPythonが嫌だな、とか思う原因だったりするんでゲソよねぇ。心が狭いんでゲソか(謎
2013-12-23 19:23:17@cametan_001 この話には複数の話題があって、それぞれをどう表現したらいいか考えていましたが、なんとなく固まってきたので書いておきます。ただ、私の意見や解釈が含まれますし、間違いも含まれているでしょうし、長いです。いつもそうですけれど。
2013-12-23 20:17:19