scheme

Scheme修行16章

TheSeasonedSchemer (5) - /var/log/messages 自分も!をbangと呼ぶの知らなくて今まで「setびっくり!」とか「setびっくら!」って読んでました。 #!をshebangと呼ぶのと似た感じですね。 letでつけた名前は内側のlambdaからしか見えなかったりするので確かに…

Scheme修行15章

Scheme修行は毎章違う題材が出てきます。前の章の継続も面白かったけど今回のも面白い。 メモ等 ここに来て初めてdefineで値に名前をつける。 set!の読み方「セット、バン!」 set!は値を返さない。defineと似たもの。Lispではsetq(セットキュー、説得) set!…

Scheme修行14章

14章では新しく第15の戒律、letが出てきます。進むにつれて第14、第12の戒律を組み合わせて少しずつ奇麗なコードへ。 letccで得た方位磁針を渡してskipするなど前章とちょっとだけ違う使い方をしてるのも面白かったです。 気づいた点等、とりあえずメモ書き…

Scheme修行13章

letcc - /var/log/messages フライングされていたので早速13章を読みました。1度読んで2度目読む前にプログラミングGaucheの継続の章を斜め読みしたらちょっとすっきりしました。 その後バスの中でもう一度読んでソースコード書きながら読んで、再度メモを確…

Scheme修行12章

学園祭の準備をしつつ12章を読みました。学園祭が無事終了したのでブログのエントリをあげます。 11章では必要があれば一つ前の要素や今までの加算の結果や逆順のリストなど付加的な引数を渡す、第11の戒律を学びました。 JavaScriptのArray.prototype.reduc…

Scheme修行11章

11章を読んでいたのでメモと感想をまとめてみます。 メモ Scheme手習いの続きなので11から始まる。 究極のλを知っていますか? two-in-a-row-b?は2つの引数が変わるのに、質問は1つの引数についてのみ p10「一方の引数は他方の引数について関数に何かを伝えま…

Scheme修行の11章を読む前に

Scheme手習いを読み終わったのでScheme修行を読みます。 本文の前に 訳者前書き 序文 はじめに があるのでまずは気になったところのメモと感想など書きます。 訳者前書き メモ Scheme手習いと同じ著者による続編 2冊合わせてSchemeの入門書として完結 なので…

Yコンビネータを理解したい

Scheme手習いの9章にYコンビネータが出てきます。 Y combinator - /var/log/messages を読んで、もう一度しっかり取り組んでみようかと思いました。 前回読んだときの感想で最後に「すっきり」と書いておきながら再度9章読むとやっぱり理解出来てなかったか…

「リストの内容比較」を解いてみる

お題:リストの内容比較 - No Programming, No Lifeを解いてみた。 なんか思ったよりすっきり書けませんでした orz

「ランダム文字列」をGaucheで解いてみる

お題:ランダム文字列 - No Programming, No Lifeを書いてみる。 すっきり。#[\w]は文字集合、\wは単語を構成する文字の集合でa-zA-Z_。#[a-zA-Z0-9_]でもいいかな。 char-set->stringで文字集合を文字列に変換するためにsrfi-14 文字列をshuffleでシャッフ…

「文字列を先頭から見て同じところまで除去」をGaucheで解いてみた

お題:文字列を先頭から見て同じところまで除去 - No Programming, No Life をGaucheで解いてみた。多分0.9じゃないと動かないです。 window.twttr = (function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0], t = window.twttr || {}; if (d.get…

Scheme修行を読む。

Scheme手習いについて Scheme手習いを読み終わりました。Scheme手習い作者: Daniel P. Friedman,Matthias Felleisen,元吉文男,横山晶一出版社/メーカー: オーム社発売日: 2010/10/22メディア: 単行本(ソフトカバー)購入: 5人 クリック: 129回この商品を含…

Scheme手習い Chapter 10

ついに10章まで来てしまった。この章で最後。手習いを終えたら修行が待っている。 いつも通り読みながらの気づき等 読みながらのメモ エントリ(entry)とは(集合のリスト ←と同じ長さの値のリスト)のペア (new-entry setl l)でエントリを作れる lookup-in-ent…

Scheme手習い Chapter 9

気付き感想等 全関数と部分関数 keep-lookingはlatの一部分に対して再帰しているのではない 不自然な再帰 部分関数 これまでに見てきた関数は全関数 ゴールに到達しない関数でもっと短いもの (define eternity (lambda (x) (eternity x))) いつまでたっても…

evens-only*&co

ちょっと時間があったのでダラダラと書いてみたのをgistにあげてみました。

Scheme手習い Chapter 8

さて、いよいよ後半になって難しくなってきた。 8章ではカリー化、収集子(継続とも呼ばれる)、収集子を渡すスタイルの関数の書き方。 第10の掟「同時に2つ以上の値を集める際には関数を作るべし。」が出てきた。 自分なりまとめ 関数はリストとアトムを返せ…

Scheme手習い Chapter 7

気付きとか 集合の例として出ているものについて(p.113) (apple peaches apple plum)や(apples peaches pears plums)などリストの中の要素に複数形のものがある。 set?がどんな関数か考えさせるために複数形の名詞を入れてるのかなぁ(複数形の名詞だからとい…

Scheme手習い Chapter 6(再)

算術式とは (数を含む)アトムか、2つの算術式を+か×か↑で結合したもの 算術式の例として 1 (アトム) 3 (アトム) 1 + 3(1と3、2つの算術式を+で結合) 1 + 3 × 4(1と3、2つの算術式を+で結合した算術式と、4を×で結合) cookie(アトム) 算術式の表現 「カッコは…

Scheme手習い Chapter 6

この章では抽象化っぽい事をやってるのかな?とりあえず気付き等を。 この章では算術式(簡単な計算式とか?)をS式で表現して、計算式を扱う手続きを抽象化 気付き 算術式だからarithmetic expressionでaexp、number expressionでnexp? S式で算術式を表現すると…

Scheme手習い Chapter 5

3でlatの再帰、4で数の再帰、5はリストの再帰。 ここで第1の戒律、第4の戒律が最終版に。アトムのリストlatの場合、数nの場合、S式のリストの場合の再帰の掟が決まる。 *関数は'(), (cons a l), (cons l l)のいずれかの上で動くから、3つ質問をする。 equal?…

Scheme手習い Chapter 4

Chapter 3までは主にリストを再帰させてたけど今度は数の再帰。自分の中でのまとめリストの時はリストが空かどうかを判定し再帰を終わらせるためにnull?を最初に質問したが、数で再帰する場合は再帰を終わらせるためzero?でゼロかどうか質問する。第5の戒律…

テストの件

id:yamanetoshi さんのところでgauche.testについて触れられてたので自分でも試行錯誤してみた。 gauche.test の件 - /var/log/messages GWなのでよく理解しないままマクロでコネコネした結果こうなったとさ。 f-testでテストしたい関数fと[answer args ...]…

Scheme手習い Chapter 3

GW入ったのもあって早速進めようかと。とりあえず読んでの感想的なremberは「remove a member」p23第1の戒律 (仮)いかなる関数を表現するときも最初の質問はすべてnull?にすべしp35の定義だとmemberが見つかる前のアトムがすべて失なわれてしまう。そこで偉…

Scheme手習い Chapter 2 自分なりの理解、疑問点

再帰きた再帰! ヒャッハー!lat?の定義について 微妙な考えの違いが。本のがnotとかしてない分無駄がないように見えたり。とりあえず本のコードはコメントアウトして自分で書いたのを使うようにしてみました。p.23のmember?についてmember?の定義の最初の質問…

Scheme手習い Chapter 1 自分なりの理解、疑問点

自分なりの理解最後に?が付く関数は#tか#fを返すcarとcdrは空でないリストについてのみ定義される空でないリストのcdrは常に別のリストになるconsの引数は2つ、第2引数はリストでなければならない。結果はリストになる。疑問点に書くべきかと思うけどこっち…