基本的な定義や文法等
learn you some erlangを始めました。
1と2は言語の説明的なところが多いので、いよいよ処理を始めるのは3からとなりますます、
http://www.ymotongpoo.com/works/lyse-ja/ja/03_starting_out_for_real.html
基本的な所
- 変数名 → 大文字から始める
- 変数のクリア → (シェル上のみ) f(変数名) または、f()で全設定のクリア。
- アトム → 小文字から始める、そのままその文言を持つ。小文字以外から始める場合はシングルクォートで囲む。アンダーバーは使える。※ただし、アトムはGCの対象外なので不必要に作りすぎない事。そのまんまやしー。
- ブール
1> true and false. false 2> false or true. true 3> true xor false. true 4> not false. true 5> not (true and true). false 6> true andalso true. true 7> true andalso false. false 8> true orelse false. true 9> false orelse false. false
続いて演算子
- 以上と以下がわかりにくい。 =:=と==の違いがもどかしいのと、=/=で同じでないというのが斬新過ぎて忘れそう。
15> 5 =:= 5. true 16> 10000 =:= 0. false 17> 1 =/= 100. true 18> 100 =/= 100. false 19> 5 =:= 5.000. false 20> 5 == 5.00000. true 21> 10 < 10. false 22> 10 <= 15. * 1: syntax error before: '<=' 22> 10 =< 15. true 23> 10 >= 15. false
- 型変換には厳しいけど、比較はできるようになっている。
number < atom < reference < fun < port < pid < tuple < list < bit string
配列とかリスト
- タプル {}で囲む。配列のようなもの。
- リスト []で囲む。
- Erlangはリストの中の数字の内、1つでも文字として表示できないものがあると、数字のリストとして数字を表示する (なんだってー)→改善されてきてるらしい。
- リストの頭をhead、残りをtailとする。[Head|Tail]と区切って定義することもできるし、内包リストをいくらでも定義することができる。ただし、[1|2]のような形にすると、リストの最後が空でない=リストでないとみなされるのでエラーになるから注意。
代入
- <- でいわゆる代入になる。
- 配列は途中で値がないとエラーになるらしい。
- もっと複雑な値にして、パターンマッチとかさせるととても楽。こりゃ確かにMapReduceに向いているかもしれないな。すごく数学を思い出してdkdkする。
35> [2*N || N <- [3,15,7,9]]. [6,30,14,18] 36> [X || X <- [1,2,3,432,45,65,434342342,4,,0], X rem 3 =:= 0]. * 1: syntax error before: ',' 36> [X || X <- [1,2,3,432,45,65,434342342,4,0,0], X rem 3 =:= 0]. [3,432,45,0,0]