Erlangを少し触ってみた

Erlangの参考書もらったのでGWを使ってちょっと触ってみた。

インストール

Macportsで入れただけ

sudo port install erlang
$ erl
Erlang R13B04 (erts-5.7.5) [source] [64-bit] [smp:2:2] [rq:2] [async-threads:0] [hipe] [kernel-poll:false]

Eshell V5.7.5  (abort with ^G)
1> 

erlコマンドを叩くとシェルが起動する。動作の確認はこのシェル上で行ってる

Erlang基本的な部分

・ピリオドがないとErlangは式の完了を認識することができない

・変数名は必ず大文字ではじめなければならない

・Erlangの変数は単一代入変数で、一度値を代入した変数に再代入することはできない

・=は代入演算子ではなく照合演算子として使用される
※ただ、照合演算子の対象に値の代入されていない変数(未束縛変数)がある場合
未束縛変数に値の代入(束縛済み変数になる)がなされる

タプル

複数の項目をまとめたいときはタプルの作成をする

{name, hoge}

タプルを何に使っているかを示すために最初の項目に記すほうがよい

{number, 1, 2, 3}

変数にいれるとか

X = {hoge, 1, 3, 5}.

タプルの値の取り出し(要素数は同じである必要がある)

{A, B, C, D} = X.
A.
=> hoge
B.
=> 1
C.
=> 3
D.
=> 5

また、取り出す必要のない要素があるなら無名変数(_)使う

{_, _, C, _} = X.
C.
=> 3

リスト

[1, 2, {hoge, 3}, 4, 5]

リストは最初の要素(ヘッド)とそれ以降の要素(テール)


リストはヘッドとテールという構成になっている
[H|T](ヘッド,パイプ,テール)

リストに要素を追加するときは既存のリストをテールとして扱い(テールはリストでなければならない)

Z = [1, 2, 3].
G = [4, 5|Z].
=> [4,5,1,2,3]

リスト値の取り出し

[A|B] = [1,2,3,4,5].
A.
=> 1
B.
=>[2,3,4,5]

ヘッドを複数指定すればとれる

[A,B,C|D] = [1,2,3,4,5,6,7].
A.
=> 1
B.
=> 2

文字列

Erlangだと"(ダブルクォーテーション)で囲まないと文字列しては扱われない

リストの値が表示可能な整数の場合、リストの表示結果は文字列になる
32 (半角スペース)
33 !

など。

どの整数がどの文字列に対応しているかは$をつければわかる

$a.
=> 97

関数

Name/N

Nameという引数をN個持つ関数であることを意味する

コンパイル

シェルで下記を実行
c(filename).

プログラミングErlang 3章の最初くらいまで。他の言語とはだいぶ違う。