まずは式。Schemeの式(と言うかLISPのS式)は非常にシンプルで、
(コマンド 引数 引数 引数 ...)のように、コマンドの後に(必要であれば)引数を空白区切りで並べて、全体を括弧で括るだけ。他の言語で言うところの制御構文ですら全てこのS式で表現されるので、処理系はただひたすらS式を評価していくだけ。
次にプリミティブな型。
- 真理値
- #t, #f
真理値が要求されるところでは、#f以外は全てtrue扱い - 数値
-
- 整数
- 12
- 有理数
- 34/5
/の前後にスペースを入れては駄目 - 実数
- 6.78
- 複素数
- 9+10i
+, -, iの前後にスペースを入れては駄目
実部が0なら実部は省略可能だが、虚部の符号は省略できない
虚部の±1は省略可能
- 文字
- #\c (文字'c')
#\tab, #\space, #\newline等、別名定義もある
Gaucheはマルチバイト文字もOK(e.g. #\あ) - シンボル
- 変数や関数の名前
名前自体に型がある
- ドット対
- (1 . #\b)
他の言語の用語で言うならば2要素のタプル。
要素の型は何でもあり。2つの要素の型は一致している必要なし。
リスト(1 2 3 4)は、ドット対(1 . (2 . (3 . (4 . ()))))の略記法 - ベクタ
- #(5 6 7 8)
- 文字列
- "This is string"
0 件のコメント:
コメントを投稿