表題のとおり、去年のこの時期にRuby始めたなーとか思いながらぼちぼちいじってます。
変数型
- 変数は頭が大文字。
- 一回決めた変数は上書きできない。
- 数
- 数。
3 / 2とかってすれば勝手に少数とかになる
- 数。
- アトム
- Rubyで言うシンボル。小文字で始めると勝手にアトム。
- タプル
- 組。数が変わらない。テュープル。
- リスト
- 配列。長さが可変。
[ Head | Tail ]とかやって頭だけ取り出したりできる。Lispのcar/cdrみたいなイメージ? - pythonも同じ名前ですっけ?
- 配列。長さが可変。
- 文字列
- は、ただのリスト。
- よく調べてないけど日本語扱うの大変みたいね?
- レコード
- タプルを便利にした感じ?(無茶なイメージ)
制御構造とか
- パターンマッチとガードが大事っぽい
ifはガードcaseはパターンマッチ+ガード
関数
- moduleは関数をまとめたものと考えて良さそう(Ruby脳?)
- 引数のパターンマッチで呼び出す手続きを変えられるっぽい。よく知らないんですけど、Javaのポリモーフィズムみたいなの?
- とりあえず5分で書いた適当なモジュール:
-module(mathtest). -export([tasu/2, hiku/2, kakeru/2, triangle_area/2, circle_area/1]). tasu(A, B) -> A + B. hiku(A, B) -> A - B. kakeru(A, B) -> A * B. triangle_area(Base, Height) -> Base * Height / 2. circle_area(Radius) -> Radius * Radius * 3.14.
udzura@ubuntu-vaio:~/dev$ erl Erlang R13B01 (erts-5.7.2) [source] [smp:2:2] [rq:2] [async-threads:0] [kernel-poll:false] Eshell V5.7.2 (abort with ^G) 1> c("mathtest.erl"). {ok,mathtest} 2> 2> mathtest:kakeru(2, 5). 10 3> 3> mathtest:hiku(2, 5). -3 4> mathtest:triangle_area(10, 8.5). 42.5 5> mathtest:circle_area(20) 5> . 1256.0 6>
その他
map/foreach/foldlとか使えるとそれっぽくなりそうな- プロセスをつくるのが、ちょっと読んだ感じではとても簡単そうで、操作も簡単そう。プロセスが生き物のようだわ
- LLな人は、そのLLが並列処理とかに弱い場合、補完する意味でErlangとかやるといいのかもねって少し思う。
- よいサイト(1):Thinking in Erlang(Japanese)
- よいサイト(2):Erlang World
* * *
まあゆっくりやってみます。
↓の高い本が欲しいので、誰かクリスマスプレゼントでください。
