scheme

Exercise 2.11 (3)

ええと、gosh な REPL で問題の手続きを評価してみると同じ形で例外エラー。中身を見てみると以下な記述を発見。 (primapp-exp (prim rand1 rand2) (primapp-exp (subst rand1) (subst rand2)))))))これなのかな、ということで修正して再確認してみると Error…

Exercise 2.11 (2)

またまたちょっとだけ。昨日の朝の続き。 問題点としては以下な模様。 渡す lambda な S 式は expression な形になっている必要あり parse すれば良いのか primapp-exp を expression.scm に追加 fresh_id.scm も修正必要 lexical-address と expression が…

Exercise 2.11 (2)

またまたちょっとだけ。 設問の記述に沿って試験を書いてみます。

Exercise 2.11

ちょっとだけ。lambda-calculus-subst 手続きですが例えば var-exp の部分が以下になってて (var-exp (id) (if (eqv? id subst-id) subst-exp exp)subst-exp に単純に置きかえるのではなくて (if (occurs-free? id exp) subst-exp (fresh-id exp id))みたい…

Exercise 2.10

fresh-id という手続きについて云々。定義が以下らしい。 (define fresh-id (lambda (exp s) (let ((syms (all-ids exp))) (letrec ((loop (lambda (n) (let ((sym (string->symbol (string-append s (number->string n))))) (if (memv sym syms) (loop (+ n…

Exercise 2.9

(a b c) を parse すると以下。 gosh> (parse-expression '(a b c)) (app-exp (free-info a) (free-info b))あるいは (lambda) を parse すると以下。 gosh> (parse-expression '(lambda)) *** ERROR: pair required, but got ()どうすりゃ良いのかな。51p …

Exercise 2.8

いちおう試験にはパス。問題に compare this version to the original solution とあるので確認してみることに。

EoPL 読んでた記録の確認とその記録 (8)

Ex.2.8 です。ちょっとカン違いしてたのですが、以下は #t なんですね。 > (occurs-bound? 'x '(lambda (y) y))occurs-bound? は以下なカンジ。 (define occurs-bound? (lambda (var exp) (cases lexical-address exp (lit-exp (datum) #f) (lex-info (id de…

EoPL 読んでた記録の確認とその記録 (7)

Ex.1.19 の free-vars および bound-vars はヤッツケ。とりあえずできあがりは GitHub に反映しといて Ex.2.8 に着手。 とりあえず occurs-free および occurs-bound と expression を定義なのか。expression は既存を流用。て、Ex.2.7 の定義を使うことに今…

EoPL 読んでた記録の確認とその記録 (6)

今週は再び台風も接近しつつある中、色々と大変らしいのですが、昨晩同様気分転換に EoPL なナニでもごもごしようと思ってます。 とりあえず Ex.1.19 から着手。free-vars とか bound-vars を書け、とのこと。occurs-free? とか occurs-bound? の試験も書い…

EoPL 読んでた記録の確認とその記録 (5)

たまにはこちらに現実トウヒ、ってここも不具合が直らない、で終わってるorz とりあえず (test* "if expression more" '(if-exp (app-exp (free-info null?) (free-info l)) (free-info l) (lit-exp 1)) (parse-expression '(if (null? l) l 1)))な試験は ap…

EoPL 読んでた記録の確認とその記録 (4)

標題をいい加減何とかしないと、と思いつつ。 とりあえず、 abstract syntax の定義 parse-expression の定義 unparse-expression の定義 を作ってみます。

EoPL 読んでた記録の確認とその記録 (3)

留守番しつつ Exercise 1.31 リトライ。とりあえず以下をでっちあげてみた。 (define lexical-address (lambda (l) (let inner ((l l) (dict '())) (cond ((null? l) '()) ((symbol? l) l) ((eqv? (car l) 'lambda) (list (car l) (cadr l) (inner (caddr l)…

EoPL 読んでた記録の確認とその記録 (2)

若干標題が微妙な気がしますが当分これで続けてみます。 昨晩ですが、以前作成した lexical-address とその試験を手元に持ってきて動かしてみて、一応試験に成功するところまで確認しています。 つうかこれ abstract syntax 使え、ってありますね。で、これ…

EoPL 読んでた記録の確認とその記録

コードを引用してるんだけど、これって GitHub あたりにあったりするのかなぁ。 確認してみたところ 無い。自分エントリをさらってみたところ、2009 年あたりにもごもごしている模様。2.2 節以降を再確認しつつ EoPL も再確認しつつ進めてみることに。

fizzbuzz 現実トウヒ

末尾再起版。 #!/usr/bin/env gosh (define (fizzbuzz . args) (let-optionals* args ((limit 100) (fizz 3) (buzz 5)) (define inner-fizzbuzz (lambda (x result) (if (> x limit) result (inner-fizzbuzz (+ x 1) (cons (cond ((= (remainder x (* fizz b…

fizzbuzz 現実トウヒ

以下なナニが書けるあたり、やはり Gauche というか Scheme はアレ。 #!/usr/bin/env gosh (define (fizzbuzz . args) (let-optionals* args ((limit 100) (fizz 3) (buzz 5)) (define inner-fizzbuzz (lambda (x limit fizz buzz) (if (> x limit) '() (con…

CodingDOJO

Clean Coder でググッてたら CodingDOJO なるソレがあるらしいことを知る。プロのプログラマになるための必読書「Clean Coder」というエントリによれば ボブおじさんはコーディング道場(Coding Dojo)という名前でボウリングゲームのTDDを何回も、何年も実演…

TheSeasonedSchemer (6)

chapter 16 を読んだとの連絡が入ったので確認。 Scheme修行16章 前半分の memoize なソレはスルー。というか、後ろ半分の Y-bang も若干微妙ですが。

TheSeasonedSchemer (5)

chapter 15 を読んだとの連絡が入ったので確認。 Scheme修行15章 ここ、というか 17 番目の戒律はレキシカルクロージャって呼ばれるソレの話な気がしています。レキシカルクロージャって言うと意味不明なので手続きオブジェクトの属性、って言えば良いのかど…

TheSeasonedSchemer (4)

今更ながらどうもこの本はこーゆー形ではなくて、ホワイトボードがある所で喧喧諤諤しながら読んだ方が良さげな気がしてきています。 Scheme修行14章 この章、確かに長くはあるのですが、非常に示唆に富んでるというかなかなか面白いです。 第15の戒律 if が…

TheSeasonedSchemer (3)

13. 読んだとの連絡は結構前に入っていたのですが、ばたばたしてて対応が遅れた。 Scheme修行13章 継続は随分前に Gauche の実装見てムネをカキムシッていた記憶があるのだけれど、実際使ったことはあまり無かったりなんかします。 ので、 再帰の途中で '() …

letcc

フライングして書いてみようかな。以下。 (define-syntax letcc (syntax-rules () ((letcc hop body1 body2 ...) (call-with-current-continuation (lambda (hop) body1 body2 ...))))) (define member? (lambda (a lat) (cond ((null? lat) #f) ((eq? (car …

TheSeasonedSchemer (2)

早速 12. 読んだと連絡が入る。 Scheme修行12章 上記エントリ見つつとりあえず読んでみよ。

TheSeasonedSchemer

今日の xhago2 では LISP 系の発信がありましたのでとりあえず満足。ちなみに括弧は取り除くものではありません。 それは良いとして、github なリポジトリから clone を。 $ git clone https://github.com/hanachin/TheSeasonedSchemer.git

Scheme 修行

遂に着手した旨の報せが twitter 経由で着信。 Scheme修行の11章を読む前に なんとかついていきたいと思ってます。 そういえば Shibuya.lisp TT#7 が 10/22 (土) に開催という報せも twitter 経由で着信していた。当分 Ust も見てないので今回はチェックした…

Y combinator なエントリ

カブせる形で TB を頂きました。 Yコンビネータを理解したい わしはざっくりループだろ、と第六感な所見を述べるエントリを投入しただけだったのですが、きちんと λ 計算について確認をして、Y combinator についての自分なりの理解をきちんと理解できる言葉…

Y combinator

昨晩と今日の午前中、以下な定義をひたすらニラんでおりました。 ((lambda (le) ((lambda (mk-length) (mk-length mk-length)) (lambda (mk-length) (le (lambda (x) ((mk-length mk-length) x)))))) (lambda (length) (lambda (l) (cond ((null? l) 0) (els…

Scheme 手習い 10 章 (2)

そういえば、ということで git fetch してみた。 $ git fetch remote: Counting objects: 119, done. remote: Compressing objects: 100% (49/49), done. remote: Total 117 (delta 76), reused 108 (delta 67) Receiving objects: 100% (117/117), 11.02 Ki…

Scheme 手習い 10 章

出ました。metacircular evaluator です。 リストのペアである_エントリ (entry)_が出てきた後に lookup な手続きだったり extend な手続きだったりして、環境を云々することを前提にしているのが分かります。

Scheme 手習い 9 章 (2)

p.169 の (((lambda (mk-length) (mk-length mk-length)) (lambda (mk-length) (lambda (l) (cond ((null? l) 0) (else (add 1 ((mk-length eternity) (cdr l)))))))) l)を展開してみます。l は (apples) とのこと。

Scheme 手習い 9 章

9 章で終わりかと思ったらそうでもない模様。 Scheme手習い Chapter 9 全関数、部分関数という用語ははじめて見たのですが、再帰しつつ引数なリストが小さくならない (null? で終わらない) というソレは初めて見ました的実装でした。

こりゃ凄い

なんかわしが以前アレしたエントリが間違えてる気がしてきました。 http://d.hatena.ne.jp/h6n/20110703/1309711452 こーゆーことをきちんとデキる、ってのが大切ですわな。

Scheme 手習い 8 章 (2)

思いだした。リストの場合の継続がイメージできていないのでした。 ええとリストなので car を処理して継続の中でも cdr について evens-only*&co しないといけないのか。んでそれに渡す継続が、、なのか。 これって以下を机上で確認した方が良いのかな。 (e…

Scheme 手習い 8 章

エントリ投入の報せが入った。 Scheme手習い Chapter 8 とりあえず git pull して $ git pull remote: Counting objects: 138, done. remote: Compressing objects: 100% (57/57), done. remote: Total 136 (delta 89), reused 126 (delta 79) Receiving obj…

Scheme 手習い

9 章は Y Combinator らしい。見てみたら確かにそうですね。なんとなく 8 章以降は試験ドリブンで云々ってのは若干微妙な気がしてきてたりして。 8 章は大丈夫かな。9 章は気合が必要なカンジ。7 章を越えてまさに核心ですな。

Scheme 手習い 7 章

今日は linaro な kernel をだらだら見ようかな、って思っていたら @hanachin_ の中のヒトからエントリ投入の報せが入った。 Scheme手習い Chapter 7 そろそろ真面目にヤらないとシャレにならないはずなので真面目に確認着手。

Scheme 手習い 6 章

読みました、なエントリが投入された旨の連絡が着信。エントリは以下。 http://d.hatena.ne.jp/h6n/20110519/1305803286 実は 最後の部分、chapter 4 の実装を盛り込んで試験とかしたら面白いのにな、って思っていたのですが、平日日中にソレをヤるには盛大…

Scheme 手習い 5 章

読みました、なエントリが投入された旨の連絡が着信。エントリは以下。 http://d.hatena.ne.jp/h6n/20110516/1305573154

Scheme 手習い 4 章

読みました、なエントリが投入された旨、連絡が入った。 http://d.hatena.ne.jp/h6n/20110508

マクロ云々

というエントリを入れたら TB が来た。 テストの件

gauche.test の件

shiro さんからコメント頂いた。ありがとうございます。曰く、 testのnameについてはどっかで書いたような気がしてたんですが、今見たらマニュアルには書いてませんでしたね。基本、後から照合できるなら何でも良いかと思います。マクロなんだからテストすべ…

Scheme 手習い 3 章

投入の報せが入った。 Scheme手習い Chapter 3

Scheme 手習い 2 章

エントリ投入の報せが tweet された。 Scheme手習い Chapter 2 自分なりの理解、疑問点

Scheme 手習い

2 章ざっくり目を通した。やっぱオンラインで読書会ってのは微妙なのかなぁ。 特にこの本は読者と筆者の対話形式になってる、って意味でもアレなのかどうなのか。

手習い

読書会 (?) にて疑問点がここにエントリ投入。 R?RS ちゃんと確認したいよね、とか Gauche のソース見てみたいな、と思います。

Scheme 手習い (2)

ええと相方な若者からリポジトリの用意ができた旨の tweet がナニ。 https://github.com/hanachin/TheLittleSchemer とりあえず clone してきて試験してみました。gauche.test いいなぁ。 とりあえず test-section について patch というかコメントを投げて…

Scheme 手習い

The Little Schemer の日本語版を読みましょう、な勉強会が実施される予定なのですが、なかなか始まらないので先んじて試験してみる事に。

The Seasoned Schemer

letrec と call/cc が中心ですか。 ちなみに The Little Schemer は let と再起と lambda らしい。オンライン読書会云々って言ってるんだけど、具体的にどーやって進めりゃ良いのだろうか。

昨晩見つけたナニ

cal/cc 実装版もあるようですが、とりあえず簡易版から見ています。 http://norvig.com/lispy.html