Gauche > Archives > 2012/04/18

2012/04/18 02:07:25 UTCmaru
#
SchemeてCLのMAKUNBOUND相当のものって持ってない、ですか?
#
(undefined)でbindして誤摩化すか...
2012/04/18 02:15:03 UTCshiro
#
無いです。そこも文化の違いですね。CLでは恒常的で可塑的な「世界」が存在して、それに定義を足したり消したりしますが、Schemeの世界観はもうちっと静的かつ限定的で、「いまここにあるプログラムが作る世界」と「書き換えたプログラムが作る世界」は別物と考えたいフシがあります。
2012/04/18 02:17:30 UTCmaru
#
了解です。ありがとうございます。
2012/04/18 02:23:15 UTCmaru
#
あれ?Gaucheで(slot-set! object 'name (undefined))とするとスロットが#<undef>ではなくて#<unbound>になるのは独自仕様ということですか?
#
これでunboundできてしまうならこれで書こう(Gaucheで動けばOKなので)
2012/04/18 02:27:06 UTCshiro
#
それは独自仕様です。でもオフィシャルにまだしてなかったような? オブジェクトシステムまわりでは#<undef>をunboundの代替として使ってる箇所が他にもあります。
#
世界観的には、グローバルな定義と個々のオブジェクトのスロットは話が違います。静的な世界観でも、オブジェクトは(世界が生きている範囲では)生きつづけて変化しつづけるので。
2012/04/18 02:33:59 UTCmaru
#
了解しました。ドキュメントからではなくHEADの挙動からそのような仕様なのかなと思いました。オブジェクトのスロットはこの動作がしっくりくるというか自然な感じがします。
2012/04/18 07:05:39 UTCshiro
#
オブジェクトのスロットがunboundというのは、個人的には「未初期化状態」、つまりオブジェクトがアロケートされてから初期化が完了するまでの期間のみに限定して存在し、一度初期化されたらもう戻せないとした方がいいんじゃないかなあとは思ってるんですが、何かの都合でunboundに戻す必要があったんだっけな。
2012/04/18 08:19:36 UTC齊藤
#
昔 Lingr の Gauche 部屋でなんかそのへんの議論があった気がする。
2012/04/18 08:43:12 UTC齊藤
#
http://www.sumibi.org/kiyoka/lingr/LingrContents_by_public_user/22_022.html
#
http://www.sumibi.org/kiyoka/lingr/LingrContents_by_public_user/07_018.html
#
unbound だと slot-missing を使えるというのが大きいかもしれませんね。
2012/04/18 09:01:37 UTC(び)
#
懐かしすぎて読みふけってしまった
2012/04/18 15:35:00 UTC齊藤
#
まちがえた。 slot-missing じゃなくて slot-unbound だった。