The King's Museum

ソフトウェアエンジニアのブログ。

プログラミング Gauche:4章〜6章

プログラミング 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 式
  • 末尾再帰
  • プログラム自身もリスト

プログラミングGauche

プログラミングGauche

(c) The King's Museum