Skip to content

Instantly share code, notes, and snippets.

@fujimisakari
Last active April 18, 2017 15:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save fujimisakari/5081385537c63c64a82b187c00f3e21b to your computer and use it in GitHub Desktop.
Save fujimisakari/5081385537c63c64a82b187c00f3e21b to your computer and use it in GitHub Desktop.

プログラミングErlang - 用語

4章あたり。

epp

Erlang モジュールは、Erlang のプリプロセッサであるepp で自動的に処理してからコンパイルされる。
プリプロセッサはソースファイルに現れるマクロをすべて展開し、必要なインクルードファイルを挿入する。

普通はプリプロセッサの出力をチェックする必要はないが、
特別な状況(欠陥のあるマクロをデバッグするときなど)ではプリプロセッサの出力を取っておくとよいかもしれない。

プリプロセッサの出力をファイルに保存するには、compile:file(M, ['P']) というコマンドを使う。
このコマンドは、ファイルM.erl に入っているコードをコンパイルするとともに、
マクロをすべて展開して必要なインクルードファイルをすべて挿入した出力をファイルM.Pに保存する。

BIF

BIFはbuild-in function(組み込み関数)の略で、Erlang言語に付属の関数のことをいう。
Erlangで書かれた関数のように見えるが、実際にはErlangの仮想機械のプリミティブ操作として実装されている。

どのBIFもerlangモジュールに属するものとして扱われるが、よく使われるBIFのほとんどは自動インポートされるため
erlang:function(...)ではなく、function(...)で呼び出せる。

バイナリ

大量の生データを格納するにはバイナリと呼ばれるデータ構造を使う。
バイナリ形式のデータはリスト形式やタプル形式のデータに比べて格納するときの領域の効率が良く、
ランタイムシステムはバイナリを効率的に入出力できるように最適化されている。
バイナリデータは、2 つ続けた不等号で囲んだ整数の列または文字列として書いたり表示する。

1> <<5,10,20>>.
<<5,10,20>>
2> <<"hello">>.
<<"hello">>

ビット構文

ビット構文はパターン照合の拡張で、バイナリデータの個々のビットやビット列を取り出したり
パック(アンパック))したりするために使われるパターン照合構文。
バイナリデータをビットレベルでパック、アンパックする低レベルのコードを書く場合は、ビット構文がとても役立つ。
ビット構文はプロトコルプログラミング(Erlang が秀でている分野である)用に開発されていて、
プロトコルデータのパックやアンパックを行う非常に効率的なコードを生成できる。

1> Red = 2.
2
2> Green = 61.
61
3> Blue = 20.
20
4> Mem = <<Red:5, Green:6, Blue:5>>.
<<23,180>>
5> <<R1:5, G1:6, B1:5>> = Mem.
<<23,180>>
6> R1.
2
7> G1.
61
8> B1.
20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment