[過去ログ] 関数型プログラミング言語Haskell Part16 (978レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
374: デフォルトの名無しさん [sage] 2011/11/05(土) 21:11:15.45 AAS
>>373373(1): デフォルトの名無しさん [sage] 2011/11/05(土) 21:03:14.21 AAS
CArray
ありがと、調べてみる
375: デフォルトの名無しさん [sage] 2011/11/05(土) 21:24:41.49 AAS
[Word8]
376: デフォルトの名無しさん [sage] 2011/11/06(日) 01:25:51.61 AAS
外部リンク:repa.ouroborus.net これも使えそうと思ってブックマークしてる。
377(1): デフォルトの名無しさん [sage] 2011/11/06(日) 02:49:06.58 AAS
Haskellの変数の有効範囲って何か具体的に決まっているのかな?
Haskel Reportを読んでもはっきりと書かれていないような。
以下のように関数(>>?)を定義してvalue1, value2を求めると
value1は普通に求められるが、value2は\s -> s + aのところで
aが未定義ですとか言われる。
括弧があると変数の有効範囲が変わるのかな?
(>>?) :: a -> (a -> b) -> b
v >>? f = f v
value1 = (1, 2) >>? \(a, b) -> b >>? \s -> s + a
value2 = (1, 2) >>? (\(a, b) -> b) >>? \s -> s + a
378(1): デフォルトの名無しさん [sage] 2011/11/06(日) 05:53:55.40 AAS
>>377
関数の仮引数の有効範囲はその関数本体というのが基本原則。
> value1 = (1, 2) >>? \(a, b) -> b >>? \s -> s + a
は
value1 = (1, 2) >>? (\(a, b) -> b >>? \s -> s + a)
と解釈されるのでs + aは\(a,b) -> ...の関数本体内に含まれるが
> value2 = (1, 2) >>? (\(a, b) -> b) >>? \s -> s + a
はかっこがあるため含まれない。
379: デフォルトの名無しさん [sage] 2011/11/06(日) 13:47:42.37 AAS
>>378 ありがとう。
メタルールか。なんとなく理解した。
380(1): デフォルトの名無しさん [sage] 2011/11/06(日) 16:49:56.15 AAS
スコープが見て分かるように()つけまくってるとlisp化してしまうという罠
381: デフォルトの名無しさん [sage] 2011/11/06(日) 18:32:21.28 AAS
>>380
そのための$です
意外とLisp化食い止められてない気がするけど…
382(1): デフォルトの名無しさん [sage] 2011/11/06(日) 18:33:01.25 AAS
そう?
少なくとも )))) はだいぶ消えると思うけど。
383: デフォルトの名無しさん [sage] 2011/11/06(日) 19:07:40.41 AAS
最近は()が多少増えても別にいいかなと思うようになってきた。
384: デフォルトの名無しさん [sage] 2011/11/06(日) 20:02:50.82 AAS
>>382
逆に言えば、そこにしか効果ないんよ
385(1): デフォルトの名無しさん [sage] 2011/11/06(日) 20:50:27.44 AAS
いいじゃん
HaskellはLispの飼い猫なんだし
386: デフォルトの名無しさん [sage] 2011/11/06(日) 20:56:34.75 AAS
昔、BASICしか知らないガキだったころ、Lispのコードを見てびびったのって
)))) って何これ、ってことだったので、それが緩和されるというのは俺にとっては
大きいw
387: デフォルトの名無しさん [sage] 2011/11/06(日) 22:02:11.57 AAS
>>385
飼い猫ちゃう
Haskellは汎用関数型決戦兵器や
Lispは・・・深海型やな
388: デフォルトの名無しさん [sage] 2011/11/06(日) 22:02:17.97 AAS
確かにBASICerにとって$は友達だもんな
389(2): デフォルトの名無しさん [sage] 2011/11/07(月) 00:04:02.33 AAS
っつーかお前らよく結合順序とか読みきれるな
俺どんな言語で書いても表見ないと安心できない
そのうち面倒くさくなってきてlisp化しちゃう
390: デフォルトの名無しさん [sage] 2011/11/07(月) 00:16:22.77 AAS
>>389
算数・数学の結合順序とほとんど同じだろ?
覚えるって程のことかいな。
微妙に分からんところは()で明示すればいいし。
391(1): デフォルトの名無しさん [sage] 2011/11/07(月) 00:29:24.10 AAS
>>389
最初はそんなんだったけど慣れた。
でもちょっと不安な所は、()だらけ。
392(1): デフォルトの名無しさん [sage] 2011/11/07(月) 00:31:14.84 AAS
直感とずれるのは関数合成くらいかな。
あれだけはいつもかっこつけてる。
393: デフォルトの名無しさん [sage] 2011/11/07(月) 01:24:33.49 AAS
迷ったら付ける
394: デフォルトの名無しさん [sage] 2011/11/07(月) 01:35:26.66 AAS
>>392
そうか?
$使えるところは関数合成できるから、ghciでlet使って試し書きする時は、$使って、ソースに書いてghciでテストする時にソースに$を関数合成に変えたものを書いてる。
(ghci上で直に定義するときは何故か関数合成できない)
395(1): デフォルトの名無しさん [sage] 2011/11/07(月) 06:03:53.93 AAS
そんなのカッコ付けたいだけ付けて、
フォーマッタで余計なカッコ外せばいいだろ。
原始時代じゃあるまいし…
396: デフォルトの名無しさん [sage] 2011/11/07(月) 07:51:34.75 AAS
>>391
hlintしないの?
397: デフォルトの名無しさん [sage] 2011/11/07(月) 08:10:41.16 AAS
結合順序間違ってるとたいてい型エラーでるし、
そしたら:iで確かめたらいいし。
398: デフォルトの名無しさん [sage] 2011/11/07(月) 10:45:37.92 AAS
>>395
フオーマッタについてもう少しkwskplz
上下前次1-新書関写板覧索設栞歴
あと 580 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.024s