スポンサーサイト

一定期間更新がないため広告を表示しています


  • 2010.11.01 Monday
  • -
  • -
  • -
  • -
  • by スポンサードリンク

Erlang 〜第3回〜 モジュール編

 本日は第3回目ということで、モジュールの解説に入っていきたいと思います。
関数型言語ということだけあって、Erlangには常に式という概念がありますので、
今まで記述してきた内容についても、式であったわけです。

今回は、Erlangの中でモジュール(メソッド)を利用する方法を説明したいと思います。
また、今回からソースファイルは基本的にコンパイルして利用する方法をとります。
コンパイル対象のファイルは、拡張子をerlとしてテキストエディタ等で作成を行います。

また、コンパイルの方法は以下のように記述します。

1> c(ファイル名).
{ok, ファイル名
※ファイル名には拡張子を含めても含めなくても問題ありません。

成功した場合は上記のようなメッセージ{ok, ファイル名}が表示されます。

また、コンパイルするファイルは任意のフォルダに保存しておいて、
保存したフォルダまでパスを移動させた後で上記コマンドを実行します。

■移動方法
1> cd("フォルダパス").
フォルダパス
ok

移動完了後のパスが実行結果に表示されます。
(※間違ったパスを指定しても、コマンドを実行したときのパスの場所に居続けます)

■現在のパスを調べる
また、現在のパスを調べたい場合は、pwd().コマンドで調べます。
(このあたりまでは、UNIX系のコマンドと同様です)

1> pwd().
現在のパス
ok


長くなってしまいましたが、ここから本日の本題です。
まず、以下のようなコードを任意のファイル名(ここではhoge.eal)で保存します。

[ファイル中身]
-module(hoge).
-export([sum/1]).
sum({X,Y}) -> X + Y.

保存が完了したら、コンパイルをして実行内容を確認します。

1> c(hoge).
{ok,hoge}
2> hoge:sum({10,20}).
30

ここで2行目に入力した方法でモジュールにアクセスします。

Javaやその他の多くのオブジェクト指向言語では、.(ピリオド)でアクセスしますが、
erlangでは、:(コロン)を用いてアクセスをしていることがわかると思います。

このあたりは慣れなので、最初は違和感があるかもしれませんが、
いずれ慣れてくると思います。

このモジュールを拡張してみたいと思います。
-module(hoge).
-export([sum/1]).
sum({X,Y}) -> X + Y;
sum({X,Y,Z}) -> X + Y + Z.

これで拡張完了です。3つの配列をすべて加算した値を返してくれるメソッドの作成完了です。

上記のようにリストの数によって加算数を変更しなくてはいけないのは面倒です。
こういった場合は、以下のように変更すれば、リストの数がどれだけあっても計算をしてくれます。

-module(hoge).
-export([sum/1]).
sum([H|T]) -> H + sum(T);
sum([]) -> 0.

このコードはリストのヘッドを取り出し、テールと加算します。
リストは空になった時点で0を返しますので、リストの数まで加算を続けて結果をかえしてくれます。
(この考え方は慣れるまで非常に難しいです。)

1> c(hoge).
{ok,hoge}
2> L = [1,2,3,4,5].
[1,2,3,4,5]
3>hoge:sum(L).
15

モジュールの基本的な考え方は以上です。
次回は、funという無名関数について説明したいと思います。


Erlang 〜第2回〜 基本仕様編

  本日より、Erlangについて解説していこうと思う。

Erlangとは関数型言語のうちの一つである。

以下にあげる要望を満たしたい人の場合に利用すると良いと書かれている。
.泪襯船灰鵐團紂璽拭爾任茲蟾眤に実行できるプログラムを書きたい。
▲機璽咼垢鮖澆瓩困暴だ気任る耐障害アプリケーションを書きたい。
「関数型プログラミング」のことを耳にしたが、そんな手法が実際に有効なのか興味がある。

ということで、第2回はErlangの基本的な仕様から説明していきたいと思います。

アトム
数値以外の様々な不変値を表す場合に利用する。
※C言語で言うところの、#define定数のようなもの。

タプル
様々なデータ構造を表現するために利用する。
※C言語で言うところの、構造体のようなもの。
《例》
1> Point = { point, 10, 45 }.
値の取り出し方法
2> { point, x, y } = Point.
これで、xとyに値を取り出すことが可能

リスト
リストを作成するためには、リストの各要素をカンマで区切って、角括弧で囲む。

1> ThingsToBuy = [ { apple, 10}, {pears, 6}, {milk, 3} ].

値の取り出し方法

2> [ Buy1 | ThingToBuy2] = ThingsToBuy.
[ { apple, 10}, {pears, 6}, {milk, 3} ].

Buy1には、リストのヘッドがThingToBuy2へはリストのテールが設定される。

文字列
Erlangでは文字列は単なる整数のリストで表現される。

1> Name = "Hello".
"Hello"

2> [1, 2, 3].
[1,2,3]
3> [83,117,114,112,114,105,115,101].
"Surprise"
※表示文字列として置換可能な整数の場合、文字列に置換される.



Erlang 〜第1回〜 インストール編

1.ダウンロードサイトより、以下のファイルをダウンロードします。



2.ダウンロードしたファイルをダブルクリックします。


3.以下のダイアログが表示されるので、[Next]を選択します。



4.インストールするディレクトリを設定します。




5.スタートメニューに登録する名称を入力して、installボタンを押下します。



6.インストールが開始されるので、完了するまで待ちます。



7.インストールが完了したら、Closeボタンを押下して完了です。




関連会社
株式会社ツクル
誠意と創意で技術を社会に活かすIT企業
          
          
時計
calendar
  12345
6789101112
13141516171819
20212223242526
2728293031  
<< August 2017 >>
Amazon
selected entries
categories
archives
recent comment
recommend
links
profile
search this site.
sponsored links
others
mobile
qrcode
powered
無料ブログ作成サービス JUGEM
2008JUGEMキャラコングランプリ
キャラクターデザイン:磯崎洋助/「おしゃれひつじ」