数値(Numbers)
普通に数値を書く
2#1010, 16#1AD3: 数字+シャープで2進16進。
$A: $マークは Char->Ascii
123.45: 小数点をうつと float
123E-10: 有効数字のパターンでもかけるよ
アトム(Atoms)
普通に文字を書く
aaaa : "aaaa"という文字
'I am' : スペースをいれたいときはシングルクォート
タプル(Tuples)
固定長配列
{ aaa, bbb, ccc } : 要素数3のタプル
リスト(Lists)
可変長配列
[ aaa, bbb, ccc ] : 要素数3のリスト
変数(Variables)
大文字で始める。
値の割り当て(変数束縛)は一回だけ。
上書きはできない。
複雑なデータ構造 ( Complex Data Structures )
タプル/リストは重ねられる。
パターンマッチ(Pattern Matching)
タプル/リストでも変数束縛
A = 10 : A:=10
{B, C, D} = {10, foo, bar} : B:=10, C:=foo, D:=bar
{A, A, B} = {abc, abc, foo} : A := abc, B = :foo
※Aは2回あるが値が同じなので無矛盾
{A, A, B} = {abc, def, 123} : 失敗する
※Aは2回あり、値が違うので
[A,B,C] = [1,2,3] : A:=1, B:=2, C:=3
[A,B,C,D] = [1,2,3] : 失敗する
パターンマッチ(Pattern Matching)
"|"をつかったリストの操作
[A,B|C] = [1,2,3,4,5,6,7] : A:=1, B:=2, C:=[3,4,5,6,7]
[H|T] = [1,2,3,4] : H := 1, T := [2,3,4]
[H|T] = [abc] : H := abc, T :=
[H|T] = : 失敗
※ HはHead、TはTail。先頭の値を取り出す。
foreach/for...inに相当する処理でよくつかう。
Perlだと pop()/unshift()。
最後は空リスト[]になり失敗する。
{A,_, [B|_],{B}} = {abc,23,[22,x],{22}} : A:=abc, B:=22
※ _ は無名変数。参照不可。何度でも使える。
普通の変数は一度しか代入できないので、
使い捨てしずらい。
なので、いらんものは _ に放りこんでおく。
- - -
Eralng Course: Module 2 - Sequential Programming