Chapter2 読んでみた

Erlang Programming

Erlang Programming

このChapter 2 Basic Erlangの部分。最初の章ってことで、文法がメインですな。

とりあえず、まとめになっていないマインドマップを載せてみる。

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)).

*1:よくよく考えたら、他の人が書いたRubyのコードをあんまり見たことがない