トップページ > プログラム > 2015年01月01日 > BLuAa79y

書き込み順位&時間帯一覧

11 位/168 ID中時間01234567891011121314151617181920212223Total
書き込み数0200010000000000000001004



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
Lisp Scheme Part39

書き込みレス一覧

Lisp Scheme Part39
572 :デフォルトの名無しさん[sage]:2015/01/01(木) 01:05:56.25 ID:BLuAa79y
>>566
やめてどうすんの?
なんか話題があるならお前が出せよ。
Lisp Scheme Part39
574 :デフォルトの名無しさん[sage]:2015/01/01(木) 01:57:49.60 ID:BLuAa79y
>>573
面白いと思って話をしてると思うんだが、お前が面白くないと思うならお前が面白くするのが筋だろ。
Lisp Scheme Part39
576 :デフォルトの名無しさん[sage]:2015/01/01(木) 05:11:40.10 ID:BLuAa79y
融合変換とか?
そういうのって適用できるパターンを大量に持っておくしかないんじゃないの。
置換えパターンをユーザが定義可能にするという方法もあるけど…。
それ Common Lisp のコンパイラマクロだし。
http://www.lispworks.com/documentation/HyperSpec/Body/m_define.htm

Haskell なんかだとそうとう豪快な変換をすると聞くけど、
動的型な Lisp ではどんな値を受取るか事前に何の保証もないので、
現実にはこういう泥臭い方法になってしまう。
理論家から見たらこれひどい仕組に見えるんじゃなかろうか。
Lisp Scheme Part39
579 :デフォルトの名無しさん[sage]:2015/01/01(木) 21:21:12.94 ID:BLuAa79y
>>555
展開のタイミングの話じゃなくて、そのときに見える「環境」について。
R6RS ではライブラリ単位でメタレベルという名の指定を与えてそれを元に分離された環境を作る。
マクロ展開時に見える環境と実行時に見える環境は別物。

でも R6RS 処理系の中でもいくつかのアプローチにわかれてる。
まずひとつは明確に分離せずうやむやにしているタイプ。 実装をあまり読んでないけど sagittarius はこのタイプだと思う。
ふたつめはユーザのメタレベル指定に厳密に従って環境を分離するタイプ。 Larceny などはこれ。
みっつめは環境は分離するがメタレベル指定によってではなくプログラムの内容を見て自動的に決定する方法 (implicit phasing) 。 Chez とかはこのタイプ。

R6RS はメタレベルの解釈について厳密な定義を与えているものの、
レベルの不整合を受入れるような実装があってもよいという逃げ道も書いてあるので、
どの方針を取るか迷いがあるんだと思う。
もしコンパイラマクロやリーダマクロを Scheme に導入するとしたら更なる混迷の渦がまきおこるに違いない。


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。