Archive for category Erlang

Ubuntu ではじめる「7つの言語 7つの世界」

Time to Read

2分

最近、微妙に身内な感じで、プログラマ風の人たちで集まり『7つの言語 7つの世界』の読書会などをやっている。

7つの言語 7つの世界

著者/訳者:Bruce A. Tate

出版社:オーム社( 2011-07-23 )

単行本(ソフトカバー) ( 336 ページ )


で、僕はとりあえず一通り読み終わって、今後は読書会の場などで手を動かしながら、サンプルコードを写経などしながら、課題を解いていったりする段階だと思ったので、先日 Ubuntu Natty マシンを用意してセットアップを行った。その際の作業メモ。某勉強会界隈はどうせみんな Mac でしかも Book Air なので、 Lion / homebrew 版の手順書を誰か作っていただけると幸甚です。

処理系を入れる

Read the rest of this entry »

 

Erlangやってる

表題のとおり、去年のこの時期に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

* * *

まあゆっくりやってみます。

↓の高い本が欲しいので、誰かクリスマスプレゼントでください。

プログラミングErlang

著者/訳者:Joe Armstrong

出版社:オーム社( 2008-02-23 )

単行本(ソフトカバー) ( 480 ページ )