言語ゲーム

とあるエンジニアが嘘ばかり書く日記

Twitter: @propella

lazy

ふつうの言語で Lazy list について考える(6)。

Scheme, Ruby, Squeak のそれぞれで実装された Lazy List を比較して特徴を味わってみます。それぞれ次のライブラリを使いました。 Scheme: gauche 付属 SRFI-40 http://practical-scheme.net/gauche/man/gauche-refj_168.html#SEC455 Ruby: Lazylist implem…

ふつうの言語で Lazy list について考える(5)。delay force

scheme で実験しながらずっと疑問に思っていたのが、なぜ関数の全体を囲む lazy が必要なのかという事でした。落ち着いて srfi-40 を読むと、map の実装に必要だと書いてありましたが、いまいち納得いかないので、さらに実験してみます。前回までの復習です…

ふつうの言語で Lazy list について考える(4)。

いろんな誤解がだんだん溶けて来たのでまた書きます。遅延リストを普通の言語で表現する方法には、奇ストリームと偶ストリームの二通りあります。奇ストリームではストリームの CDR にあたる部分(次の値) だけが遅延評価される一方で、偶ストリームでは全体…

ふつうの言語で Lazy list について考える(3)。

おお、id:SaitoAtsushi さんのおかげで何か思いついたので書きます。まず余分な cdr 計算しないようにした遅延評価版フィボナッチ数列です。 (define lfib (delay (let loop ((a 0) (b 1)) (cons a (delay (loop b (+ a b))))))) すばらしい。。。さて、何ら…

ふつうの言語で Lazy list について考える(2)。

前に書いた stream の実装はどうなっているのだろうと気になったんだけど、難しくてライブラリのソースコードは全然読めませんでした。そこで、http://practical-scheme.net/gauche/man/gauche-refj_54.html#SEC100 にある遅延評価の使い方の例を見て、手作…

ふつうの言語で Lazy list について考える。

こないだ Prolog を実装する時には随分 Haskell の遅延評価にお世話になりました。そこで、この大変便利な機能を普通の言語で使うにはどうしたら良いだろうかと色々調べると、Scheme の http://srfi.schemers.org/srfi-41/srfi-41.html というのに詳しく書い…

俺様言語 Lazy を作る。その6。祝!遅延評価完成!

実行環境: http://languagegame.org/pub/lazy/Lazy.html ソースコード: http://languagegame.org/dev/!svn/bc/32/trunk/lazy/Lazy.js (343 行) 屈折四ヶ月。やりました!ようやく最初の目的だった遅延評価が完成しました!しんどいのでメモだけ。ほとんど SI…

俺様言語 Lazy を作る。番外編。Yコンビネータ。

Y コンビネータとは何か? あなたはどんな言葉でも使う事が出来ます。しかし、知らない言葉を使う時は、今まで知っている言葉で説明できなくてはなりません。例えば、「カニ」と「コロッケ」と「クリーム」だけを知っている時、あなたは「カニクリームコロッ…

俺様言語 Lazy を作る。その5。(進展なし)

ここ数日体調を思いっきり崩したのと、仕事で手一杯になってしまったので進展はありません。なので自分でもどこまでやったか忘れないように現在の状況を書きます。実は進展が無いと言いつつ数日前から何度もコードを書いては消し書いては消しという事を繰り…

俺様言語 Lazy を作る。その4。

http://languagegame.org/pub/lazy/Lazy.html プログラムは同時にリストではない。 さて、前回の気付いた重要な点は、lisp の伝統的なリストの表現方法 '(this is a list) => (this is a list) がおかしいという事でした。数字の 7 を評価すれば 7 が返るよ…

俺様言語 Lazy を作る。その3。

http://languagegame.org/pub/lazy/Lazy.html rewrite と compose : 項の書き換えと関数合成。 いよいよ山場。 遅延評価を実装する。遅延評価が完成した暁には次のような式が評価出来るようになる。 > ((lambda (ones) (take 5 ones)) (cons 1 ones)) (1 1 1…

俺様言語 Lazy を作る。その2。

ちまたでは言語開発合宿というのをやってたそうです。http://wiki.fdiary.net/ldev/ 無茶苦茶楽しそう!この日記も思いっきり影響されてますが、ヘタレなのでこそこそ隠れてマイペースに行きます。http://languagegame.org/pub/lazy/Lazy.html factorial 先…

俺様言語 Lazy を作る。

(注意: この俺様言語の日記はなにぶん学習の過程ですので、数多くの嘘が混ざっている場合があります。信用しないで下さい)http://languagegame.org/pub/lazy/Lazy.htmlふとプログラミング言語を一つ作ってみる事にした。そうすると俺に足りないものが見つか…