Contenu connexe
Plus de Yoichi Toyota (20)
Erlangを触ってみた
- 4. ! 同時並行性
◦ アクターモデルによる実現
◦ スケールアウトも容易
" コア数に応じて性能も上がる
" …のはタスクの内容次第
" キューイングとかMapReduceとか、そういうのはちょ
お得意
" 複数台でも動作させられる
! 参照透過性
◦ 常に同じパラメータの関数は同じ結果を返す
" 変数の上書きが出来ない
◦ 実用主義的に、それを破る方法もある
" 今日の日付を返すtoday()関数とかも作れる
- 7. $ erl
Erlang R14B04 (erts-5.8.5) [source] [64-bit] [smp:2:2] [rq:2] [asyncthreads:0] [kernel-poll:false]
Eshell V5.8.5 (abort with ^G)
1>
! OK、起動した。
◦ 起動しない人はaptとかyumとかで適当に
入れて下さい…
- 8. ! +,
-, *, /
◦ 四則演算はまあ見たまんま
◦ /は返り値として浮動小数返す
◦ C的な/はかわりにdivを使う
◦ %はrem
1> 5 / 2.
2.5
2> 5 div 2.
2
3> 5 rem 2.
1
- 11. !
何でも保持できる
◦ [Element1, Element2, … ElementN]
8> [1, 2, 3, Point, 4, 5].
[1,2,3,{4,6},4,5]
9> [97, 98, 99].
"abc“
◦ 文字列=数値のリスト
" かなり微妙くさい
- 12. !
結合・削除
◦ ++, -◦ hd, tl
◦ ¦
10> List = [1, 2, 3].
[1,2,3]
11> List ++ [4, 5].
[1,2,3,4,5]
15> List -- [1, 3].
[2]
16> [1, 2, 3] -- [1, 2] -- [1].
[1,3]
17> hd([1, 2, 3, 4]).
1
18> tl([1, 2, 3, 4]).
[2,3,4]
19> [hd([1, 2, 3, 4])|tl([1, 2, 3, 4])].
[1,2,3,4]
- 13. !
数学の集合記法みたいなもの
◦ [ 式 ¦¦ 式を適用する集合 ]
◦ 集合に対して条件も記述可能
20> [2*N || N <- [1, 2, 3, 4]].
[2,4,6,8]
21> [2*N || N <- [1, 2, 3, 4], N rem 2 =:= 0].
[4,8]
23> [X+Y || X <- [1, 2], Y <- [2,3]].
[3,4,4,5]
- 14. !
電話会社が作ったらしさが見える機能
◦ バイナリデータを<< >> で囲む
35> Pixels =
<<213,45,132,64,76,32,76,0,0,234,32,15>>.
<<213,45,132,64,76,32,76,0,0,234,32,15>>
36> <<Pix1:24, Pix2:24, Pix3:24, Pix4:24>> = Pixels.
<<213,45,132,64,76,32,76,0,0,234,32,15>>
39> <<Pix1:24>>.
<<213,45,132>>
- 15. !
リスト内包と同様のことをバイナリでも実
現可能
◦ <- の代わりに <= を利用する
35> Pixels = <<213,45,132,64,76,32,76,0,0,234,32,15>>.
<<213,45,132,64,76,32,76,0,0,234,32,15>>
41> RGB = [ {R,G,B} || <<R:8,G:8,B:8>> <= Pixels ].
[{213,45,132},{64,76,32},{76,0,0},{234,32,15}]