Hatena::Grouperlang

檜山正幸のErlang未確認情報 RSSフィード

 | 

2009-06-11 (木)

関数節と関数名

| 08:41

fun式の場合

8> (fun (0) -> 1; (1) -> 2; (2) -> 3 end)(1) .
2
9>

と書ける。けっこうスッキリしている。

(0) -> 1; 
(1) -> 2; 
(2) -> 3.

という書き方が、普通の関数定義でも使えるといいな。

succ(0) -> 1; 
    (1) -> 2; 
    (2) -> 3.

とか、

succ
 (0) -> 1; 
 (1) -> 2; 
 (2) -> 3
.

いいね、いいね。でもモチロン使えない(泣)。

[追記]余計なことが書いてないのがいいし、表みたいな感じの関数節をイッパイ書いた後で関数名をリネームするとき便利だと思う。ムキになって無理クリ:

succ(N) -> (fun 
 (0) -> 1; 
 (1) -> 2; 
 (2) -> 3
end)(N).

エラーしたときの関数名が '-succ/1-fun-0-' みたいになってしまうのが難点。[/追記]

[追記の追記] funで囲うより、内側にcaseを入れたほうがスッキリでしょ、って?

succ(N) -> 
case N of
 0 -> 1; 
 1 -> 2; 
 2 -> 3
end.

確かにそうだ。

でもね、関数節で関数名を省略できるのと、caseを入れるのとは違うのだ、微妙に、気分的に。[/追記の追記]

VoluntasVoluntas2010/01/13 11:58fun() でのパターンマッチはエラーが起こったとき優しくないので使うのは最低限にしておいたほうがよさげです。

m-hiyamam-hiyama2010/01/13 12:17Voluntasさん、
funは好きで、すぐ使っちゃうんだけど、http://erlang.g.hatena.ne.jp/m-hiyama/20100113/1263344750 で書いた観点からも、名前付き関数を定義したほうがいいようです。短いならfunのほうがコンパクトで読みやすいですけど。

FreidaFreida2013/08/10 18:12I can't believe you're not playing with meht--at was so helpful.

PamPam2013/08/12 08:02That's an expert answer to an inireesttng question http://uupzlrq.com [url=http://ykmkxb.com]ykmkxb[/url] [link=http://ktbaqg.com]ktbaqg[/link]

HyunwooHyunwoo2013/08/14 19:11I could watch <a href="http://suamipfmjx.com">Scrihdlen's</a> List and still be happy after reading this.

 |