プログラミング Gauche の4章〜6章のメモ。ちなみにコードはここ。
4章: Gauche の開発スタイル
- Read, Evaluate, Print, Loop => REPL
- リテラル
- 数値、真偽値、文字、文字列
- 1, 3.14, 2/3 => 単一トークン
- 真偽値
- #t, #f => #f 以外の値はすべて真
- 文字
- #\a, #\あ
- 文字列
- "abcd"
- 読み書き不変性(read/write invariance)
- REPL の出力はそのまま Gauche に与えることができる
- 手続き
- (<手続き> <引数1> <引数2> ...)
- まずすべての引数が評価される
- 束縛(bind)
- (define <変数名> <式>)
- (define (<手続き名> <引数> ...) <式> ...)
- 呼び出し => (<手続き名> <引数> ...)
- 基本の開発スタイル
- プログラムを書く
- C-x C-f で読み込み
- scheme バッファで動作確認
- プログラムを修正
- C-x C-e で修正を反映
- scheme バッファにて動作確認
- 戻る
5章: プログラムの書式
- 「スクリプト」、「モジュール」、「パッケージ」
- スクリプト:実行可能な形式
- モジュール:再利用可能なライブラリ
- パッケージ:モジュールやスクリプトを配布可能にしたもの
- スクリプト
- 書かれている式を順に評価
- main という手続きがあればそれを呼び出し
- コメント
- ; ⇒ 1行
- #| |# ⇒ 囲ってる部分
- #; 後ろのS式が一つ捨てられる
- 慣習
- ; ⇒ コードと同じ行に書いて、その行の処理を説明する
- ;; ⇒ インデントに対してコメントする感じ
- ;;; ⇒ 大きなコメントブロック
- 名前と予約語
- 予約語はない。再定義可能。
- use
- use: モジュールの読み込み
- (use srfi-1) リストモジュール
- SRFI
- Scheme Request for Implementation
- srfi-1 のリストライブラリと srfi-13 の文字列ライブラリをよく使う
- Gauche ではよく使うものは組み込みでサポートされている
6章:リスト
- リストのふたつの顔
- インタプリタは入力されたリストを常に手続きとして解釈
- データとしてリストを渡したい時はクオートをつける
- 「クオートが付いていたらデータ。付いていなければプログラムコード」
- クオート
- 一度クオートすれば内部もデータになる
- リストの操作
- car, cdr, '()
- (list 1 2 3) ⇒ 1, 2, 3 のリストを作る手続きを実行
- '(1 2 3) ⇒ 1, 2, 3 のリストというデータを直接与える
- (cons 1 2) ⇒ (1 . 2) ドット対
- null?: 引数が空リストかどうか
- pair?: 引数が空でないリストかどうか
- クオートと eval
- eval: データとしてのプログラムとして解釈する
- (eval '(+ 1 2) (interaction-environment)) ⇒ 3
- リストの走査
- fold を使う
- (<手続き>
(... (<手続き> (<手続き> (手続き <初期値>)))...)) - 繰り返し構文は再帰呼び出しの syntax sugar。
- 式の前で #?= をいれると式と評価値を出力してくれる
- cond 式
- 末尾再帰
- プログラム自身もリスト

- 作者: Kahuaプロジェクト,川合史朗
- 出版社/メーカー: オライリージャパン
- 発売日: 2008/03/14
- メディア: 大型本
- 購入: 22人 クリック: 713回
- この商品を含むブログ (244件) を見る