: Gauche&SICP読書会に参加してきた
Scheme初心者が戸惑いながらもSchemeの面白さの一端に触れることができました.主催者のyukkyさん,emaさんありがとうございました.
午前はプログラミングGauche読書会, 午後からSICP読書会というとってもScheme漬けな一日でした.
プログラミングGauche読書会
- 作者: Kahuaプロジェクト,川合史朗
- 出版社/メーカー: オライリージャパン
- 発売日: 2008/03/14
- メディア: 大型本
- 購入: 20人 クリック: 688回
- この商品を含むブログ (273件) を見る
プログラミングGaucheの6.2章まで読み進めました.O'RELLYにしてはとっても斬新な構成ではないかと思う.導入部が短く,かつ各章ごとが短く区切られている.読者に読み進めるためのモチベーションが維持されやすい.
3章 Common Lispの影響
この章も3pと少ない.
Gaucheはフランス語で"左".コラムを読むまで知らなかった.
ちなみに右は"doroit".
4章 Gaucheの開発スタイル
Gaucheを触ってみる.GaucheのスクリプトエンジンであるgoshはC-hとかヒストリが使えないので,rlwrapというread lineをラップするものを使うととっても便利.
Emacsの話が10p近くある.やはりLispはどうしてもEmacsになってしまうのかな.Schemeの世界ではVim人口が少なそうだ.Vimでいいプラギンないかな...
5章 プログラムの書式
Schemeの拡張子は.scmにする.goshにプログラムを読み込む時mainが定義されていればそれがcallされる.
コメントには3つの種類がある.
- 行コメント ;
- ブロックコメント #|から |#まで.ネストも可能
- S式コメント #;
予約語がないのでユーザが再定義できる.
gosh> (define define 100) 100 gosh> define 100 gosh> (define (sum_of_square x y) (+ (* x x ) (* y y))) *** ERROR: unbound variabel: x Stack Trace:
モジュールを使うにはuse構文を使ってSRFIライブラリをロードする.
(use srfi-1)
でもこれだとなんのライブラリかよくわからない.Schemerは何番がどのライブラリかということを把握しているんだろう.
6章 リスト
リストはデータを括弧でくくって表現する.
データとしてリストを扱いたい場合は'(クォート)をリストの前につける.
'(1 2 3)
リストの基本操作
- car
- cdr
- cons
- list
- null?
- pair?
これらを組み合わせることでいろんなことが定義できる.
SICP読書会
- 作者: ジェラルド・ジェイサスマン,ジュリーサスマン,ハロルドエイブルソン,Gerald Jay Sussman,Julie Sussman,Harold Abelson,和田英一
- 出版社/メーカー: ピアソンエデュケーション
- 発売日: 2000/02
- メディア: 単行本
- 購入: 31人 クリック: 980回
- この商品を含むブログ (476件) を見る
計算機プログラムの構造と解釈の1.1から1.1.7まで進めました.やはりSICPは一筋縄ではいかないです.
1.1.5
今回重要だったのは正規順序の評価と作用的順序の評価.
問題1.5で正規順序と作用的順序の評価が同じ結果にならない例.
(define (p) (p)) (define (test x y) (if (= x 0) 0 y))
という定義があるとき,
(test 0 (p))
を評価すると正規順序の評価では被演算子を評価するのでpが評価される.しかし,pは
pなので無限ループになってしまう.
逆に作用的順序であればpは評価されず先にtestが評価されて
(if (= 0 0) 0 (p))
となり,0が戻る.
という理解で正しいのかな.