人気ブログランキング | 話題のタグを見る
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」を読んでいたからかな?
by fkmn | 2007-05-13 23:33 | IT
<< 広告における証取法 NHK「クローズアップ現代」の... >>


とあるWebアプリケーションエンジニアの日記

by fkmn
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
カテゴリ
以前の記事
ブログパーツ
リンク
検索
タグ
最新のトラックバック
その他のジャンル
ファン
記事ランキング
ブログジャンル
画像一覧

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