飛行機本 を読みながらのメモ
$ sudo apt-get install xsltproc fop libssl-dev
$ sudo apt-get install openjdk-7-jdk unixodbc-dev
$ curl -O http://download.basho.co.jp.cs-ap-e1.ycloud.jp/otp/download/otp_src_R16B03.tar.gz
$ tar xvf otp_src_R16B03.tar.gz
$ cd otp_src_R16B03
$ ./configure --enable-m64-build --disable-hipe --enable-dtrace
- 式の終わりは "."
- 変数名は大文字で始まらなければならない
=
はパターン照合処理 (代入ではない)- 定数 = アトム
- アトムは小文字で始まり、数字, "_", "@" が使える
'
で囲めば大文字でも始められるし、スペースや+
,*
などの記号も使える_
は無名変数、捨てるために使う。特定の値に bind されない- タプルは構造体とかハッシュみたいなもの
Person = {person,{name,{first,joe},{last,armstrong}},{footsize,42}}.
- リスト
[
,]
内にカンマ区切りでなんでも
1> ThingsToBuy = [{apples,10},{pears,6},{milk,3}].
[{apples,10},{pears,6},{milk,3}]
2> [1+7,hello,2-2,{cost, apple, 30-20},3].
[8,hello,0,{cost,apple,10},3]
- 文字列(Latin-1)は
"
で囲む。'
ではダメ(厳密には Erlang に文字列型は無く数値のリスト)
[H|T]
H: Head
T: Tail
1> List1 = [aaa, bbb, ccc].
[aaa,bbb,ccc]
2> [A, _, _] = List1.
[aaa,bbb,ccc]
3> A.
aaa
4> [A, bbb, ccc] = List1.
[aaa,bbb,ccc]
5>
文字列は数値のリストが全て表示可能範囲にあるかどうかだけ
1> [1,2,3].
[1,2,3]
2> [83,117,114,112,114,105,115,101].
"Surprise"
3> [1,83,117,114,112,114,105,115,101].
[1,83,117,114,112,114,105,115,101]
4> [72,229,107,97,110].
"Håkan"
ある文字を数字で表すのに、この文字の数字はいくつかな?という場合は $ が使える
1> $a.
97
2> $A.
65
3> $z.
122
4> $Z.
90
5>
パターン | 項 | 結果 |
---|---|---|
{X,abc} | {123,abc} | 成功 X → 123 |
{X,Y,Z} | {222,def,"cat"} | 成功 X → 222, Y → def, Z → "cat" |
{X,Y} | {333,ghi,"cat"} | 失敗 - タプルの形が違う |
X | true | 成功 X → true |
{X,Y,X} | {{abc,12},42,{abc,12}} | 成功 X → {abc,12}, Y → 42 |
{X,Y,X} | {{abc,12},42,true} | 失敗 - X を同時に {abc,12} かつ true にすることはできない |
[H|T] | [1,2,3,4,5] | 成功 H → 1, T → [2,3,4,5] |
[H|T] | "cat" | 成功 H → 99, T → "at" |
[A,B,C|T] | [a,b,c,d,e,f] | 成功 A → a, B → b, C → c, T → [d,e,f] |
1> L = [1,2,3,4,5].
[1,2,3,4,5]
2> [2*X || X <- L ].
[2,4,6,8,10]
3> Buy = [{oranges,4},{newspaper,1},{apples,10},{pears,6},{milk,3}].
[{oranges,4},{newspaper,1},{apples,10},{pears,6},{milk,3}]
4> [{Name, 2*Number} || {Name, Number} <- Buy].
[{oranges,8},{newspaper,2},{apples,20},{pears,12},{milk,6}]
演算子 | 説明 | 引数の型 | 優先順位 |
---|
- X | + X | 数 | 1
- X | - X | 数 | 1 X * Y | X * Y | 数 | 2 X / Y | X / Y (浮動小数点除算) | 2 bnot X | X のビットごとの否定 | 整数 | 2 X div Y | X と Y の整数除算 | 整数 | 2 X rem Y | X を Y で割った整数剰余 | 整数 | 2 X band Y | X と Y のビットごとの論理積 | 整数 | 2 X + Y | X + Y | 数 | 3 X - Y | X - Y | 数 | 3 X bor Y | X と Y のビットごとの論理和 | 整数 | 3 X bxor Y | X と Y のビットごとの排他的論理和 | 整数 | 3 X bsl N | X の算術左 N ビットシフト | 整数 | 3 X bsr N | X の算術右 N ビットシフト | 整数 | 3