Chapter2 読んでみた
- 作者: Francesco Cesarini,Simon Thompson
- 出版社/メーカー: Oreilly & Associates Inc
- 発売日: 2009/06/26
- メディア: ペーパーバック
- 購入: 1人 クリック: 44回
- この商品を含むブログ (21件) を見る
とりあえず、まとめになっていないマインドマップを載せてみる。
Erlangの文法上で気づいたことは、
- Erlang Shellはなかなか快適。少なくともScalaよりは速いし。
- Tupleはほとんど連想配列のような形で使われるらしい。コレがErlang流。
- Listは普通かな。Lispとほとんど同じで安心した。
- パターンマッチはおもしろい。[H|T]で取り出したり。
- =:=とか=/=みたいな一部変態的な記号がある。
- 変数は大文字から始めないといけない。しかも再代入禁止。
- 関数は引数の個数に応じて、書き分けられる。CのSwitch文を思い出した。
てな感じか。
しかし、まだErlangのコードを書くための流儀とかをわかってないなぁ。この辺は、実際のプログラムを読むのが一番いいんだろう*1。
Exercise
Exercise 2-2: Modules and Functions
ま、やるだけなので何ともなんだけど、変数名にアンダースコアが付く場合と付かない場合で、何が違うのか、と言うのがよくわからなくなった。
0hter, _Other
前者の方は、変数と認識されるけど、後者はどうなってるんだろう? Anonymous変数と思っていいのかな?
Exercise 2-3: Simple Pattern Matching
and, or, notを使ってはいけない、と言うことで、一瞬はてな、と思ったけど、これでいいんだよなぁ?
% Exercise 2-3: Simple Pattern Matching -module(boolean). -export([b_not/1, b_and/2, b_or/2, b_nand/2]). % b_not/1 Function b_not(true) -> false; b_not(false) -> true; b_not(_) -> {error, invalid_data_type}. % b_and/2 Function b_and(true, true) -> true; b_and(_, _) -> false. % b_or/2 Function b_or(false, false) -> false; b_or(_, _) -> true. % b_nand/2 Function b_nand(A, B) -> b_not(b_and(A, B)).