忍者ブログ
Since 14.Jan.2009:08:29 プログラミングと絵のブログ
×

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


まずはHello, Worldから
正直erlコマンドでBEAMっていう対話式のインタプリタに入って
io:format("Hello, World.~n").
で終わりなんだけど

せっかくなのでコンパイルできるファイルにしてみる

-module(hello).
-export([hello/0]).

hello() ->
  io:format("Hello, World.~n").

以上

-module(hello).がモジュール名の宣言
これはファイルをhello.erlにしないとダメ
つまりモジュール名とファイル名は統一する
他の言語と違ってイニシャルは小文字
大文字にするのは変数のみ

-exportは他の言語で言えばスコープをpublicにするのと同義
[]がListで、配列みたいなもん
helloが関数名、0が引数の数
Erlangはオーバーロードを使える上に
引数の数が違ったら同じ名前の関数でも
完全に違うものとして扱われるから引数の数の指定が必要らしい

hello() ->が関数の記述の開始

io:format()はioモジュールのformat関数を呼ぶ
Erlangでは\nの代わりに~nで改行
~sとか~pとか使って埋め込みもできます
そのときは
io:format("~p is ~p", ["Erlang", "Good"]).
でListを与えて置き換え

ちなみに.が関数の終了
複数行に渡るときは最終行だけ.であとは,で区切る
オーバーロードの時は.の代わりに;を使う

例えば

add({add, X, Y}) ->
  Z = X + Y,
  Z;
add({mul, X, Y}) ->
  X * Y.

{}で囲んだのはタプルといって、Listとは微妙に違うみたい
どこが違うかは知らん

add, mulは変数ではない
イニシャルが大文字じゃないし
これはAtomといって、Rubyとかのシンボルみたいなものかな

文字列みたいにそのまま渡せる
大文字を使いたかったら'Add'って感じに''で囲む
文字列は""しか使えない

Erlangの場合、引数の受け取りはパターンマッチで行う
[H | T]とするとListを最初の要素とその他で分けて受け取れるし
つまり上記の例のようにパターンマッチで分岐させることもできる

よってErlangではif文をあまり使わないらしい
ガードっていう条件まで付けれるし
同じパターンで違うガードの関数が増えるとcase文を使う
PR

Comment
Name
Title
Mail
URL
Comment
Pass   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
この記事へのトラックバック
この記事にトラックバックする:
[40] [39] [38] [37] [36] [35] [34] [33] [32] [31] [30
«  Back :   HOME   : Next  »
カレンダー
04 2024/05 06
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
ブログ内検索
プロフィール
HN:
uguisu_an
年齢:
34
性別:
男性
誕生日:
1989/08/20
自己紹介:
基本的にテキトー
最新コメント
[10/01 くゆる]
[09/21 uguisu_an]
[09/17 mayigo]
[07/17 uguisu_an]
[07/15 shinh]
最新トラックバック
アクセス解析
フリーエリア
P R
忍者ブログ [PR]