忍者ブログ
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。


Erlang Documentation に沿ってみる。

ファイル test.erl
-module(test).
-export([sqr/1]).

sqr(X) ->
    X * X.
これは
-module(test).    testって名前のモジュールで、
testモジュールには
-export([sqr/1]).    sqrという名前の引数が一つの関数があるよー。


で、コンパイル
1> c(test).
./test.erl:none: no such file or directory
error
そんなファイルねーよ。

test.erlはerlangの実行フォルダと同じ場所になければいけないらしいあたりまえだ。
そんなわけで


で作業フォルダを設定して再トライ。

1> c(test).
{ok,test}
2> test:sqr(4).
16
うまくいった。



Erlangドキュメントではfactorialで解説されてた。
俺はfibonacciでやる。
test2.erl
-module(test2).
-export([fibonacci/1]).

fibonacci(0) ->
    0;
fibonacci(1) ->
    1;
fibonacci(N) ->
    fibonacci(N-1) + fibonacci(N-2).
関数がまだ続く場合、"."ではなく";"を置くらしい。

Erlang (BEAM) emulator version 5.6 [async-threads:0]

Eshell V5.6  (abort with ^G)
1> c(test2).
{ok,test2}
2> test2:fibonacci(5).
5
3> test2:fibonacci(10).
55
fibonacci(100)とかやったら死んだ。



引数が二つのとき。

test3.erl
-module(test3).
-export([tasu/2]).

tasu(X, Y) ->
    X + Y.

1> c(test3).
{ok,test3}
2> test3:tasu(5,9).
14



まとめ

erlファイル
-module(モジュール名).
-export([関数名/引数の数]).

関数名(引数) ->
    なんか.

コンパイル
> c(モジュール名).

関数を使う
> モジュール名:関数名(引数).
PR

乗算命令 MUL
MUL ECX
{EDX, EAX} = {EDX, EAX} * ECX

EDX: 上位32ビット
EAX: 下位32ビット

 Erlang シェルは電卓としても使えるっぽい。
Erlang (BEAM) emulator version 5.6 [async-threads:0]

Eshell V5.6 (abort with ^G)
1> 1+1.
2
1+1が計算できるなんて素晴らしい!

2> 1/0.
** exception error: bad argument in an arithmetic expression
     in operator  '/'/2
        called as 1 / 0
3> A=3.
3
4> B=4.
4
5> C=A*B.
12
変数に計算結果を記憶させられる。

6> aa=4.
** exception error: no match of right hand side value 4
7> Aa=4.
4
変数名の最初の文字は大文字でなければならない。らしい。

11> D=3.
3
12> D=5.
** exception error: no match of right hand side value 5
Erlangでは、変数の上書きは出来ないらしい。
"変数"じゃなくて"定数"じゃん。

Erlang ダウンロードページ
http://www.erlang.org/download.html

最新版らしいものを(Dec 5, 2007)をダウンロード。
サーバーが海外にあるためか、転送が非常に遅い。25分くらいかかるらしい。
ミラーサイトからダウンロードを試してみたら、結構速い。
それでも10分くらいかかったけど。

あまりに暇だったので、コマンドプロンプトに
>tracert www.erlang.org
とかやってみたり。

でDL完了、インストールは問題なし。

とりあえずErlangを起動してみる。
Erlang (BEAM) emulator version 5.6 [async-threads:0]

Eshell V5.6  (abort with ^G)
1>
こんなん出てきた。

ドキュメントの Installation Guide の
Installation Verification とやらを試してみる。
Eshell V5.6  (abort with ^G)
1> toolbar.start()
1> toolbar:start()
1> toolbar:start().
* 2: syntax error before: toolbar
いろいろアホなことをやってしまった。

どうやら、命令の最後には(".")をつける必要があるようだ。
そして、(".")を付けないで改行すると、命令が続いてると解釈されるのね。
あたりまえか。

1> toolbar:start().
でやっとうまくいく。ツールバーらしいウィンドウが出た。
と同時にWindows標準のファイアウォールから警告が。
なんかListenでもしてるのか?スルー。

2> halt().
で無事に終了できました。

インストールは成功してるようです。おめでとうございました。


[1] [2] [3
«  Back :   HOME   : Next  »
ブログ内検索
忍者ブログ [PR]