2013-07-01から1ヶ月間の記事一覧

末尾再帰判定 暫定版

再帰的にcarを覗いて行って 「lambda」だったら末尾再帰と判定してみました。微妙にうまくいかないところもあるけどとりあえずコミットしてみます。https://github.com/moremagic/MyLisp/commit/7ef2ed0a37a47aa31323d6b206a91f8e5a8ef6caなんでだろうなぁ

末尾再帰最適化 環境保持ができない

スタックのさかのぼり方がまずいみたいで 全然スタックの使用量が減ってないようです。ちゃんとスタックをさかのぼれるようにしたところ 変数の解決ができなくなる。環境がなくなっちゃってますね ><; スタックをさかのぼるときに環境も一緒に保持してあ…

末尾再帰でスタックオーバフローになるのはどうにかなった

末尾再帰が必要な関数に突入したら 1.末尾再帰フラグをON 2.現在の環境を変数に保持。 3.評価を停止。スタックを上る 4.評価の最後にたどり着いたら末尾再帰フラグを確認 5.末尾再帰フラグがONだったら フラグを倒して 6.保持した環境を使用して…

末尾再帰最適化

ファイル読み出しを書いてみたら スタックが足りなくなって止まっちゃう。これは末尾再帰最適化が必須だなとおもい、もう一回悩んでみる。 ググりまくって、どうもこんな感じというのを見つけたので実装してみた。末尾再帰の時は 1.評価を途中でやめる。 …

ファイル読み込み open-input-file, read-char, eof-object? に対応

https://github.com/moremagic/MyLisp/commit/a942d4a30e60fd8584e2cc74f806a196696bb7d6 ;ファイル読み込みテスト ; http://www.geocities.jp/m_hiroi/func/abcscm07.html を参考にしました (define (type1 filename) (let ( (iport (open-input-file filen…

HDD到着

同じモデルのHDDが届きました。 梱包は完璧。でも新しいHDDをすでに買ってしまったので 今すぐには必要のない状態。このHDDはストックとしますか。

HDD保証期間内だった!

シーゲートのサイトで保証期間が調べられるみたいなので 調べてみることに。http://www.seagate.com/jp/ja/support/warranty-and-replacements/なんと保証期間内!やった! 交換してくれるらしい。こんなの初めて。 シーゲート凄いなぁ。とりあえずサイト上…

HDD交換

HDDの型番を日記に書いておいたので調べる手間が省けました。 日記書いておいてよかった。[asin:B0067G0Y6G:detail]あれ?でもこれ、買ってから壊れるまで一年たってないじゃん。。。orz違うメーカにしようかとも思いましたが、 RAID の再構築に問題が起きた…

NAS HDD異常

朝起きたらNASのHDDアクセスランプが赤に! メールをチェックすると HDD I/O Errorと出てました。 [Harddisk 3] I/O error, sense_key=0x3, asc=0x0, ascq=0x0, CDB=28 00 66 10 b9 78 00 00 08 00 . HDDの復旧方法なんか全然わかんないなぁ。。 とりあえず…

Schemeプログラマのレベル10

http://practical-scheme.net/wiliki/wiliki.cgi?Scheme%3AScheme%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9E%E3%81%AE%E3%83%AC%E3%83%99%E3%83%AB10レベル2 でした ><; Lisperを名乗ることは まだまだ出来なそうです。

string? boolean? なんかに対応

文字列型の対応しました。 文字列型を取り込めるようにパーサも修正。空白とかを何の考慮もなく次のAtomだと思ってパースしてたから 空白が混じる文字のパースができなかったので修正。あと、エスケープシーケンスにも対応できた。はず。。。細かいところの…

Land of Lisp

Land of Lisp作者: M.D. ConradBarski,Conrad Barski,川合史朗出版社/メーカー: オライリージャパン発売日: 2013/02/23メディア: 大型本購入: 1人 クリック: 18回この商品を含むブログ (19件) を見るまだ、手習いもSICPも終わってないのに 好奇心に負けてつ…

call/cc が意味わからん。。。orz

call/ccを勉強ちゅ。こことか http://www.shido.info/lisp/callcc.htmlココなんかを見ながら勉強中です http://www.geocities.jp/m_hiroi/clisp/clispb14.html でも、こんなコードがあった時、 ㏄ に何が入るのかわからない。><; (define *save* '()) (de…

Let(名前付き、名前なし) Display 関数を作成

(let ((x 2)) (let ((y 3)) (+ x y))) ;5 (display "abc") ;"abc" ねむい。。。

SECD 仮想マシン なんてものがあるらしい

http://www.geocities.jp/m_hiroi/func/abcscm33.htmlなんかすごい。 メモメモ。

現時点での フィボナッチ計測

(define (fib n) (if (< n 2) n (+ (fib (- n 1)) (fib (- n 2))))) (time (fib 30)) ;time は cdrの一つ目の実行時間を計測するデバック関数 ;実行結果 ;8918[ms] ;832040 結構遅くなっちゃった。 環境の取り回しが重くなったのが原因なのかなぁ。

make-bank-account に対応

MyLisp(仮称) で 以下サイトの make-bank-account が動くようになりました! http://www.shido.info/lisp/scheme_asg.html (define (make-bank-account amount) (lambda (n) (set! amount (+ amount n)) amount)) (define yamada-bank-account (make-bank-acc…

本当に使いものになるシステムの間には天と地ほどの差があるんだよ

いい言葉だと思うのでメモ。 「どこかのハッカーが一週間ほど Lisp と格闘して、"みてくれ!! Lisp をモノにしたぞ!!" と叫ぶ、そんなことがしょっちゅうあるだろうさ。でも、それと本当に使いものになるシステムの間には天と地ほどの差があるんだよ」 ハッカ…

内部状態 の取り扱いで新たな発見

ココを見ていたら新たな新事実が。 http://www.shido.info/lisp/scheme_asg.html (define (make-bank-account amount) (lambda (n) (set! amount (+ amount n)) amount)) (define yamada-bank-account (make-bank-account 1000)) (yamada-bank-account 5000)…

フィボナッチ計測

(define (fib n) (if (< n 2) n (+ (fib (- n 1)) (fib (- n 2))))) (time (fib 30)) ;time は cdrの一つ目の実行時間を計測するデバック関数 ;実行結果 ;5285[ms] ;832040 こいつ、案外早いぞ。

MyLisp(仮称) スキーマ手習いの eq?-c が動くようになった。

MyLisp(仮称)の作成中。です。 https://github.com/moremagic/MyLisp/wiki lambda が二回続けてくるなんて想像もしてなかった。 結構悩んだ挙句、lambda 周りの処理を大きく修正。lambda が出現したときのみ環境変数から展開するといいのかな。 applyだけし…

MyLisp(仮称) で no-nums がやっと動いた。

MyLisp(仮称)の作成中。です。 https://github.com/moremagic/MyLisp/wikiScheme手習いの no-nums がどうも動かなかったのでずーっと悩んでました。 ※ 2,3日ほっといたのは内緒w isNumber? の評価前にapplyしていないのが原因でした。 public Sexp eval(…

ジョンマッカーシーって、最近までご存命だったのか。

http://jp.techcrunch.com/2011/10/25/20111024creator-of-lisp-john-mccarthy-dead-at-84/知らなかった。 自分の生きてた時代と同じ時代を生きていたことを。 うれしいけれども、気づいたのが遅くて悲しい。ずいぶん遅くなってしまいましたがご冥福をお祈り…

quote対応完了

多分これで大丈夫なはず。

パースをやり直し中。

quote の 簡略?表現の ’ に対応すべく パースを直し中。直しているうちにやっつけだったところが綻びてきて うーーん。今後いろいろ弄りやすいように 作り直すことにしました。趣味だしね。

びっくり

Schemeと戯れていたら DrScheme に見慣れないボタンが。。。押してみるとびっくりw 誰だろう?このひとw