nitsujiの日記 RSSフィード

2008-10-28

アナグラム

23:57 | アナグラム - nitsujiの日記 を含むブックマーク はてなブックマーク - アナグラム - nitsujiの日記 アナグラム - nitsujiの日記 のブックマークコメント

プログラミングErlang P44.

code/lib_misc.erl

perms([]) -> [[]];
perms(L)  -> [[H|T] || H <- L, T <- perms(L--[H])].
2> lib_misc:perms("123").
["123","132","213","231","312","321"]

よくわかんないので順を追って考えてみる。

perms("123"). は H|T] || H <- "123", T <- perms("123"--[H])]. で、組み合わせは以下の3通り。

H: "1", T: perms("23")
H: "2", T: perms("13")
H: "3", T: perms("12")

perms("23"). は H|T] || H <- "23", T <- perms("23"--[H])]. で、組み合わせは以下の2通り。

H: "2", T: perms("3")
H: "3", T: perms("2")

perms("3"). は H|T] || H <- "3", T <- ]?. で、これは ["3"] となる。perms("2"). も同様なので perms("23"). は以下のようになる。

["23", "32"]

一つ前に戻って当てはめていく。

H: "1", T: ["23","32"]
H: "2", T: ["13","31"]
H: "3", T: ["12","21"]

なので、

["123","132","213","231","312","321"]

となる。

2008-10-27

プログラミングErlang

21:05 | プログラミングErlang - nitsujiの日記 を含むブックマーク はてなブックマーク - プログラミングErlang - nitsujiの日記 プログラミングErlang - nitsujiの日記 のブックマークコメント

気づいたら前回の更新から4ヶ月以上経ってた。

会社にあったプログラミングErlangを借りてきた。おもしろいね、この本。

いままでWebにある英語のドキュメントを読んでたけど、日本語だとやっぱ楽だ・・。

2008-06-10

カンマ、セミコロン、ピリオド

00:10 | カンマ、セミコロン、ピリオド - nitsujiの日記 を含むブックマーク はてなブックマーク - カンマ、セミコロン、ピリオド - nitsujiの日記 カンマ、セミコロン、ピリオド - nitsujiの日記 のブックマークコメント

そろそろ整理が必要になってきた。

expressionを区切るのがカンマ

Expr1,
...,
ExprN

guardとかclause bodyを区切るのがセミコロン

Guard1;...;GuardN
Name(Pattern11,...,Pattern1N) [when GuardSeq1] ->
    Body1;
...;
Name(PatternK1,...,PatternKN) [when GuardSeqK] ->
    BodyK.
if
    GuardSeq1 ->
        Body1;
    ...;
    GuardSeqN ->
        BodyN
end

あとcase, receive, fun, tryなども同様。

Bodyはa sequence of expressions.

GuardSeqはa sequence of guardで、さらにGuardはa sequence of guard expressions.

function declarationやmodule attributeの終端がピリオド

Name(Pattern1,...,PatternN)[when GuardSeq1] ->
  Body1.
-module(Module).
-export(Functions).

Object Not Found

VoluntasVoluntas2008/06/18 11:33; は or で、 , は and で、 . は end と覚えるのが早いです。

nitsujinitsuji2008/06/22 00:43なるほどー

2008-06-09

erlangのprocess

01:27 | erlangのprocess - nitsujiの日記 を含むブックマーク はてなブックマーク - erlangのprocess - nitsujiの日記 erlangのprocess - nitsujiの日記 のブックマークコメント

Erlang processes are neither operating system processes nor operating system threads, but lightweight processes somewhat similar to Java's original “green threads” (the Java Virtual Machine now uses native threads). Like operating system processes (and unlike green threads and operating system threads) they have no shared state between them. The estimated minimal overhead for each is 300 words (4 bytes per word on 32-bit platforms, 8 bytes per word on 64-bit platforms), so many of them can be created without degrading performance (a benchmark with 20 million processes was tried[3]).

Erlang (programming language) - Wikipedia, the free encyclopedia

なんかわかるようでわかんないのでgreen threadsというのを見てみる。

The Erlang virtual machine has what might be called 'green processes' - they are like operating system processes (they do not share state like threads do) but are implemented within the Erlang Run Time System (erts). These are sometimes (erroneously) cited as 'green threads'.

Green threads - Wikipedia, the free encyclopedia

OSじゃなくてVirtual Machineが管理するのがGreen threadsというやつらしい。で、erlangのprocessは言わばgreen processesってところで、OSプロセスみたいなんだけどErlang Run Time System (erts)で実装されていると。

なんかわかってきた。

つまりこのへんの軽量プロセス的なものの実装がerlangは優れてるってことなんですかね。

なんかおもしろそうなのでどういう仕組みなのかもうちょっと詳しく知りたいところではある。

LottaLotta2011/09/18 22:59Why do I bhoter calling up people when I can just read this!

utjzvhexvutjzvhexv2011/09/19 02:10ac8jRp <a href="http://ustobbmhuyui.com/">ustobbmhuyui</a>

2008-06-07

5.6.2を入れた

23:59 |  5.6.2を入れた - nitsujiの日記 を含むブックマーク はてなブックマーク -  5.6.2を入れた - nitsujiの日記  5.6.2を入れた - nitsujiの日記 のブックマークコメント

macportsで入れた5.5.5(R11B-5)を使ってたんだけど、twitterエラーメッセージの意味が分からんとぼやいていたらエラーメッセージがカオスだと教えてもらったのでソースから最新版(R12B-2)を入れ直しました。

./configureでodbc link check failedとか言われたけどよくわかんないのでスルーした。

manは別にダウンロード解凍して/usr/local/lib/erlangにコピーしたらerl -man ioとかできるようになった。

分けわかんなかったエラーメッセージは取ってないんだけど同じことをやったときのエラーメッセージは以下のようになって断然わかりやすくなった。

exception error: undefined function shell_default:format_temps/1

jj1bdxjj1bdx2008/06/19 15:14R12B3が出てますね.