Archive for 6月, 2007

通販終了の告知

月曜日, 6月 25th, 2007

zickです。
Webサイトで情報を公開し始めてからもう5ヶ月となるリリカルLispですが、
ようやく実費回収できました。
情報が公開されるや否やはてなブックマークに登録してくださった皆様、
体験版を公開すると、その感想を書いてくださった皆様、
イベントで買ってくださった皆様、通販で買ってくださった皆様、
本当に……本当にありがとうございました。
より多くの人に手にとってもらおうと思ってはじめた通販も、
そろそろ役目を果たし終えたかと考え、
あと2週間程度で通販を打ち切ろうかと思います。
とはいえ、実は在庫は沢山あったりします(笑)
それをどうするかは現在考え中です。

地獄Schemeでの継続

月曜日, 6月 18th, 2007

zickです。
このサイトも、もうあまり新しい人が来ることはなくなってきたかなー……
なんて思っていたら、はてなブックマークとかを見るとごく稀に件数が増えていて、
時々だけれど新しい人が来てくれているようで何よりです。
と、はてなブックマークを眺めていると、地獄Lispを紹介してくれた人がいるようです。
つれづれなるままに
誠にありがとうございます。
せっかくなんで地獄Lispのパワーアップ版である地獄Schemeで、
一体どんなことが出来るかを、ここに少し載せてみようかと思います。宣伝もかねて(笑)

(define cont #f)
(+ 1 (call/cc (lambda (k) (set! cont k) 0)))

(1行が1回の入力->評価と対応しています)
簡単に解説。
最初の式は単に変数に値を入れているだけです。
で、2つの式ですが、これは、
「『1』と『現在の継続を引数としてある関数を呼んだ時の値』との和」を求めます。
“ある関数”とはもちろん「(lambda (k) (set! cont k) 0)」のことですが、
“現在の継続”とは、これからする処理のことで、
この時点において”現在の継続”とは
(1)これから何かを評価して値を求め、
(2)それに1を加えた値を求め、
(3)その値をトップレベルに返す
というものです。
この式を評価したときは単に(+ 1 0)の値である1がトップレベルに返るだけですが、

(cont 7)

を評価してやると、トップレベルに8が返ります。これは、
(1)これから何かを評価して値を求め、
の『何か』が7になり、残りの
(2)それに1を加えた値を求め、
(3)その値をトップレベルに返す
が行われるため、(+ 1 7)の値である8がトップレベルに返るわけです。
継続は勝手に破壊されるようなことはないので、何度でも呼び出すことができ、

(cont 127) => 128
(cont 255 => 256

このような結果となります。
“現在の継続”とは一体何かを平たく言うと、”そのときのスタックの状態”ですね。
もう少し面白いのが、ここで

(cons 'a (cont 15))

としたときです。この式の値は16となります。つまり、consが無視されるんです。
これは、(cont 15)が評価された時点で、これからする処理が
「consを呼び出しトップレベルに戻る」ではなく、
「何かに1を加えてトップレベルに戻る」に書き換わるためです。
要するにスタックの状態を丸ごと書き換えるようなものです。

コミコミ11

金曜日, 6月 8th, 2007

zickです。
リリカルLisp頒布情報をお届けします。
[ComicCommunication11]
日時:2007年6月10日(日曜)
場所:インテックス大阪
配置:Q-42a 「烏御堂」
リリカルLisp以外にも、B5サイズの本がぴったり入る烏箱や、らき☆すた本も頒布するようです。
(というより、後者二つの方がメインです(笑))
大阪辺りにお住まいで、まだリリカルLispを手に入れていない方は是非お越しください。