Erlang 体験入門

 Erlang というプログラム言語が流行ってるらしいので、以下のエントリを参考に、ちょろっと試してみた。
 [O] これから15分でErlangを始めるための資料

 というわけで、まずインストール。Mac Ports を使用。

sudo port install erlang
で、インストールが完了するまで、1時間以上待たされる・・・orz。僕のMacは、そんなにしょぼいですか?orz

 Mac Ports でインストールすると、Emacs の erlang-mode もついてくるので、以下を .emacs に追加(参考:erlang-mode)。

(setq load-path
(cons "/opt/local/lib/erlang/lib/tools-2.5.2/emacs"
load-path))
(setq erlang-root-dir "/opt/local/lib/erlang/")
(setq exec-path (cons "/opt/local/lib/erlang/bin/" exec-path))
(require 'erlang-start)
erlang-mode の時に、C-c C-k すると、バッファのコードをコンパイルしてくれる。

 Hello World は省略。

Erlangは「フィボナッチ数列のN番目の値を求めるプログラム」を
書く練習をすれば、最初に必要なことが大分分かると思いました。
との事なので、フィボナッチ数列を求めるプログラムを書いてみる(参考:「SICP 1.2.2 節」、「Getting Started With Erlang」)。

-module(fibonacci).
-export([fib_tree/1]).
-export([fib/1]).

fib_tree(0) ->
0;
fib_tree(1) ->
1;
fib_tree(N) ->
fib_tree(N - 1) + fib_tree(N - 2).

fib(N) ->
fib_iter(1, 0, N).

fib_iter(A, B, N) ->
if
N == 0 ->
B;
true ->
fib_iter(A + B, A, N - 1)
end.


10> fibonacci:fib_tree(10).
55
11> fibonacci:fib(10).
55

 fib_tree という関数が、木構造再帰バージョン、fib が線形再帰バージョン。

 「-export」宣言すると、モジュールの外からも関数が使える。Java でメソッドを public にするようなものかな?なので、fib で使っている fib_iter を外から呼び出すとエラーが出る。

 それから、fib_tree のように、Haskell のガードっぽく、引数の値によって、処理を変える事が出来る。もちろんそんな事せずに、fib のように、if で処理をわけても良い。

 あんまり違和感が無かったのは、「ふつうのHaskell」を読んでいたからかな?
[PR]
by fkmn | 2007-05-13 23:33 | IT
<< 広告における証取法 NHK「クローズアップ現代」の... >>


とあるWebアプリケーションエンジニアの日記
S M T W T F S
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
カテゴリ
以前の記事
ブログパーツ
リンク
検索
タグ
最新のトラックバック
プログラミングが「出来る..
from とりあえず9JP?
Genographic ..
from ナンジャモンジャ
ジュセリーノ
from ありの出来事
くちこみブログ集(ライフ..
from くちこみブログ集(ライフ)(..
以降、丁寧語で行こう!
from エッセイ的な何か
人気ジャンル
ファン
記事ランキング
ブログジャンル
画像一覧

fkmnの最近読んだ本 フィードメーター - フッ君の日常 あわせて読みたい AX