Gauche > Archives > 2014/01/16

2014/01/16 02:04:08 UTCshiro
#
シンボル中の#については、「rnrsでシンボルに使えない文字だし、後で拡張構文に利用出来るように今のうちに禁止しとこう」という意図もあります。例えば foo##bar で (with-module foo bar) の意味になる、というアイディアをだいぶ前から転がしてます。CLのパッケージ付きシンボル、あるいはClojureのqualified nameみたいなものですね。ただ、sandboxingとの兼ね合いがあって決めかねているのですが。
2014/01/16 02:42:49 UTCyamasushi
#
..とか...という変数名を使ってもいいのですね。これは面白い。
2014/01/16 02:52:22 UTCshiro
#
今r7rs見直してみたんですが、r7rsだと.hoge は正当なシンボルですね。<peculiar identifier>の方のルールが適用できます。
2014/01/16 07:33:13 UTC(び)
#
$<< と $fmap って、結果的に同じことやってるように読めちゃうんですが...
2014/01/16 12:24:24 UTCshiro
#
あれ、ほんとだ。どっちかの存在を忘れててもう一方を作っちゃったのかな。
2014/01/16 12:34:06 UTCshiro
#
fmapは確かHaskellのFunctorから取ったんだけど、<<はたぶんliftMのつもりで、型をうるさく言わなけりゃどっちももともと同じようなものだったってことのような気がする。
2014/01/16 13:08:22 UTCaharisu
#
確かに<peculiar identifier>の中に.から始まるルールが定義されていますね。
#
ぐぬぬ。見落としていました。
2014/01/16 15:48:29 UTCshiro
#
$fmapはFunctorのfmap, fmap2, ... をn-aryに拡張したものだけど、Scheme的感覚からするとmapというのはコンテナの各要素に対する操作ってイメージが強くて、「型に対してパラメタライズされた何か (コンテナもその一部だけど、コンテナとは限らない」に対する要素操作関数の適用、というのはmapというイメージからちょっとずれるかも。
#
$fmapの場合は、Parser a に対して要素操作関数 a -> b を適用して Parser b を得る、というような感じで使ってるわけだけど、Parser a は「コンテナ」ではない。むしろ liftM のように "liftする" という名前にした方がしっくりくるかもなあ。