地獄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を手に入れていない方は是非お越しください。

地獄Scheme

5月 25th, 2007

zickです。
以前、公開した地獄Lispにcall/ccをつけてみました。
地獄Scheme
多値は扱えないので、継続オブジェクトにapplyを適用したりすることは出来ませんが、
それなりにちゃんと動作するはずです。多分。
大学の講義の中に突然思いついたアイディアを、あまり検討もせずに適当に書いてみただけなので、
ひょっとしたら、大きなバグとかがあるかも知れませんが、お気になさらずに(笑)
追記:
どうやらFirefoxでしか動かないようです。
Firefox, IE6.0, Operaで動作確認を取りました。

通販フォームが一時アクセス不可となっておりました。

5月 19th, 2007

bugyoです。
ホスティング先のサーバが落ちていたため一時通販フォームに繋がらない状況となってしました。
現在は回復しております。
ご迷惑をおかけ致しました。
通販にて多数のご注文を頂きました。
嬉しい限りです。
実費回収は・・・出来るんでしょうか?

gauche.night行きたかった……

5月 11th, 2007

毎度のことながら、zickです。
通販の方ですが、結構反応がいいみたいです。
同人とかとは縁がなくても興味がある方は結構いたみたいです。
やっぱし通販やってよかったと思いました。
さて、Lisperの間で話題となったgauche.night
私は残念ながら行けなかったのですが、小黒様のプレゼンの中で、
リリカルLispのスクリーンショットを使っていただきました。
とはいえ、どんな風に使っていただいたのかさっぱり分かってません。
そのときの写真とか撮られた方がいらっしゃいましたら、こっそり見せてください(笑)

通販開始しました

5月 8th, 2007

zickです。
かなり遅くなってしまいましたが、通販を始めました。
通販内容
品名: 魔法言語 リリカル☆Lisp
内容: 魔法言語 リリカル☆Lisp本体ディスク 1枚
   魔法言語 リリカル☆Lisp オフィシャルガイドブック 1冊
   <通販特典> あどばんすど NScLisper オフィシャルガイド
価格:本体1000円 送料300円
通販の手順と流れ
こちらをご覧ください。

通販は連休明け程度に開始

5月 4th, 2007

zickです。
ずっと更新を休んで、すみませんでした。
リリカルLispの通販ですが、連休明け数日後から開始したいと思います。
価格は1300円
支払いは定額小為替
詳しくは4月16日の日記を見てください。
お届けするものですが、
リリカルLisp (CD)
リリカルLispオフィシャルガイドブック (本)
の二点に加え、
あどばんすどNScLisperオフィシャルガイド (本)
をお付けします。
この本はNScripterの上でどのようにLispインタプリタを作ったか、
あっさりと説明するという、ちょっとだけ技術的っぽい内容になっています。
サンプル1(表紙)
サンプル2(13ページ)
サンプル3(21ページ)
表紙と内容が釣り合ってない気もしますが、そこは気にしないでください(笑)
NScripter好きの人ならこの表紙がネタだってことに気づいてくれますよね?

もう少しお待ちください

4月 23rd, 2007

zickです。
通販の件ですが、もう少し時間が掛かりそうです。
何も考えずに「通販します」といったため、まだ準備が終わってません。
申し訳ありませんが、もう少しお待ちください。
できるだけ早く開始できるようにします。
そんなわけでお茶を濁すもの第三段(第一段と第二弾はここ)
関数の作れない関数型言語COSAK
なんと、このプログラミング言語は『(』『)』『s』『k』『 (空白)』の5種類の文字しか使わないんです。
表示にも上記の文字しか使わなかったり、関数型言語と名乗りながら関数抽象が出来なかったり。
しかし、数値計算はもちろん、高階関数が使えたり、案外何でも出来ます。
……というのは売り文句で実際はただのネタですが(笑)

通販について

4月 16th, 2007

毎度のことながらzickです。
通販について、現在予定されていることをとりあえず書いておきます。
*通販の流れ*
(1)入力フォームに必要事項を記述
(2)注文用の用紙が作られるので、それを印刷
(3)印刷した(2)と定額小為替を同封して指定の住所に郵送
(4)あとはリリカルLispが届くのを待つだけ
上記の通り、支払方法は定額小為替です。
価格は1300円前後を予定しています。
更なる情報は近日発表する予定です。

通販します

4月 14th, 2007

zickです。
『通販やったら買うっていう人います?』
と書いて、一人でもコメントを付けたら通販をやろうと決めていたら、
本当にコメントを付けてくれた人がいたので、通販をやろうかと思います。
現状としては、私の独断で通販をやるといっただけで、
何も決まっていないので、詳細は後日発表します。
楽しみな人は楽しみに待っていてください(笑)