hello / erlang / memo.txt

*無名関数:関数ポインタのようなもの
	Z=fun(X) -> 2*X end
*forの作り方
	for(Max, Max, F)->[F(Max)];
	for(I,   Max, F)->[F(I)|for(I+1, Max, F)].
	in C:
	for(int i=0;i<=Max;++i){ F(i) };
*lists:map/2の使い方
	map(_,[])->[];
	map(F,[H|T])->[F(H)|map(F,T)].
*リスト処理: Lの配列のうち、Maxより小さいものを二倍したもの: qsortとかもこんな感じでできる
        [2*X || X<-L, X < Max]
*Guards
max(X,Y) when X > Y ->X;
max(X,Y) -> Y.
andalso, orelseが分からない
is_atom(X)とかいろいろある
abs(X)とかもいろいろある

*Records
タプルのデフォルト値とか値の意味とかを記述しておくことができる

*case文
case Expression of
    Pattern1 when Guard1 -> Hoge;
    Pattern2 when Guard2 -> Huga;
    Pattern3 -> HHHHaaa
end

*if文
if
    Guard1->
	Expr21;
    Guard2->
	Expr3
end

*リストについて
lists:*というモジュールがある;List++[H]は重いので配列が短いときだけどうぞ

*例外
Exit(Why) {'Exit',Pid,Why}というメッセージを発行する
throw(Why) Exceptionを発行する
erlang:error(Why) Erlangプログラムがクラッシュしてしまう
try Hoge of
    Pattern1 when Guard1 ->
	Expression1;
    Pattern2  -> Expression2
catch
    ExceptionType1: Expattern1 when ExGuard ->
	 Hoge;
      ExceptionTyp2: ExPattern2  -> Huga
after
    AfterSth
end
try...end構文はそれ自体がシンボルとして値を持っていたりするので、普通に使える
of...catchなんかは省略できたりする

*stacktraceを表示する
try hoge(X)
catch
    error:Y->
	{Y,erlang:get_stacktrace()}
end.

*BIF=Built In Function

*Binaries

*attributes
-module(modulename)
-import(Mod,[Name/3])
-export([Hoge/2])
-compile(Options)
-vsn(Version)
-SomeTag(Value) %user-defined, author, purpose, etc.
-include(Filename)
-include_lib(FileNameOrFullPath)

*BlockExpressions
begin
    ...
end
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.