Alabica: quote
まず、なんで遊ぶだけなのにわざわざ作るのか?について。
既存の処理系のが色々ライブラリも充実してるし、安定してるんだけと微妙に自分にとっては使いにくいから。文法規則の一部が合わなかったり、覚えるのが面倒くさかったり、マニュアルが読みづらくて挫折したりってので、じゃあ自分が使い易いのを作ったらいいんじゃね?って発想です。
まず自分でこう書きたいって思いがあって、それが実現できたら楽しいし、実現できなくても、それがちゃんと考えた結果ならそれはそれで納得がいく。
でもだいたいやりたいと思うことは実装はできる。文法的な整合性が悪くて変更することはあるけど。自分の知らない概念や機能は思いもつかないので入れられない。なので自分で作る場合、自分の知識以上の機能は入れられないという欠点はあります。まぁそれは勉強せい、ということでしょうね。
今回はquoteについて。
通常、左から順に評価されるのですが、ちょっと今すぐには評価しないで欲しいなーという場合があるのでquoteという概念を導入してます。LISPやらCatやらにあるあれです。評価して欲しくないWORD群を[]で囲います。
>>> 1 2 [+] 1 2 [+]
となって"+"が評価されません。
applyでquoteを実行します。
>>> 1 2 [+] apply 3
で、こんなのをどこで使うかというて制御構文やらなんやら色んなところで使います。
if/else文で勝手に評価されたら困るもんね。その他の使い方については、また後で紹介します。
以前Catもどきのインターブリターを作った時には、後置にこだわったので制御構文も後ろに後ろに持ってったけど、わかりにくかったので今回は反省して、
制御構文は前に持って行く
という方針で進めました。 もうちょっといこうかと思ったんですが疲れたので制御構文についてはまた次回にて。
Trackback
please send trackback to:
http://sh1.2-d.jp/b/trackback/2009-09-07-22-39

