@kyanny's blog

My life. Opinions are my own.

第二章 さあ、はじめよう

  • シェルの終了
C-g q [RET]
C-c a [RET]

> q().
> halt().
  • 整数 (N進数)
    • とても大きい数値演算もできる
    • N進数表記がある N#数
> 16#cafe.
> 32#sugar.

> 2#100.
4
> 8#100.
64
> 16#100.
256
> 32#100.
1024
    • 実験
      • 数字として使える文字がアルファベットの z までなので 36 進数までしか表現できない
23> 36#0.
0
24> 37#0.
* 1: illegal base '37'

40> 36#z.
35
  • 変数は単一代入、先頭は必ず大文字
  • パターン照合 (パターンマッチ)
  • アトム、先頭は小文字
    • ただしシングルクォートで囲む場合はその限りではない
    • シングルクォートで囲む必要のないアトムは囲まない表記をしたものと同一
    • アトムは大局的
true, monday, twitter@kyanny, 'Monday'

> a =:= 'a'.
true
  • タプル
    • アトムでタグ付けする慣習
    • 値を取り出すときはパターン照合
> Point = {point, 45, 10}.
{point,45,10}
> {_, X, Y} = Point.
{point,45,10}
> X.
45
> Y.
10
  • リスト
    • リストの要素は違う型?でも良い
    • ヘッドとテール
> [H|T] = L.
% (setq HEAD (car LIST))
% (setq TAIL (cdr LIST))

> []. % 空リスト

> L = [orange,banana].
[orange,banana]
> LIST = [apple|L]. % リストの先頭に要素を追加
[apple,orange,banana]

> L = [apple,orange,banana].
[apple,orange,banana]
> [X|Y] = L. % リストから要素を取り出すのもパターンマッチで
[apple,orange,banana]
> X.
apple
> Y.
[orange,banana]
  • 文字列
    • 必ずダブルクォートで囲む
  • 文字列は印字可能な文字を表す整数のリスト
> "Hello".
"Hello"
> [72,101,108,108,111].
"Hello"
  • ドル記号表記
> $H.
72
  • 文字コードは Latin-1 (ISO-8859-1)
  • f() でシェルの変数束縛をリセット