[Top Page][Discussion][Edit History][All Pages][Recent Changes][->Japanese]


Category of Erlang

Erlang/2005/09/05/こんなLLはXXだにて文字列型がないと書いたが、 どういうことかというと、あれだ。 Cといっしょ。 Erlangにおける文字列は要するにリスト。Cだとポインタだから正確には違うか。

> string:equal("hello", [104,101,108,108,111]).

Cと違った明白な利点はやはり、car, cdrがそのまま引っぱってこれることでしょう。

例えば、公式配布のドキュメントに付いてくるサンプルとして、 下のような順列のリストを作る関数permsを例にとってみる。

The following example generates all permutations of the elements in a list:

perms([]) -> [[]];
perms(L)  -> [[H|T] || H <- L, T <- perms(L--[H])].

We take take H from L in all possible ways. The result is the set of all lists [H|T], where T is the set of all possible permutations of L with H removed.

> perms([b,u,g]).

リストの内包表記の例なんだけど、この話は置いておいて、 これがそのまま文字列にも適用できる。

> lists:foreach(fun (X) -> io:fwrite("~s ", [X]) end, perms:perms("anagram")).


でもまあ文字列型がないと、他のLL言語のように正規表現でウヴォアー、 ってができないのでちと痛い。

blog comments powered by Disqus