at_yasu's blog

ロード的なことを

Erlang メモ

いくつか

** mapっぽいこと

Python Code

> [N*2 for N in range(10) if N % 2 == 0]
[0, 4, 8, 12, 16]

Erlang Code

1. [2*N || N <- [0,1,2,3,4,5,6,7,8,9], N rem 2 =:= 0]. 
[0,4,8,12,16]

ただやっぱ Erlang のほうが柔軟っぽい

1. [X+Y || X <- [1,2], Y <- [2,3]].
[3,4,4,5]

この場合のリスト包括が 1+2, 1+3, 2+2, 2+3 に展開されるみたい。

** モジュールの作成

スッカリ作り方忘れてて適度にはまってた。

join 関数のようなもの作ってみる。

ファイル名: recursive.erl

-module(recursive).
-export([join/2]).

join(N, [{K,V}]) -> K ++ "=" ++ V;
join(N, [{K,V}|Array]) -> K ++ "=" ++ V ++ N ++ join(N, Array).

一つ目のjoin関数の末尾は「;」になる。同じ名前の関数があるから? 実行例

1> recursive:join("&", [{"A", "1"},{"B", "2"},{"C", "3"}]).
"A=1&B=2&C=3"