トップページtech
1001コメント339KB

関数型プログラミング言語Haskell Part16

レス数が1000を超えています。これ以上書き込みはできません。
0001a36 ◆K0BqlCB3.k 2011/10/07(金) 12:27:25.71
haskell.org
ttp://www.haskell.org/

日本語サイト
ttp://www.sampou.org/cgi-bin/haskell.cgi
ttp://www.shido.info/hs/

過去ログ
関数型プログラミング言語Haskell
Part1 ttp://pc.2ch.net/tech/kako/996/996131288.html
Part2 ttp://pc2.2ch.net/test/read.cgi/tech/1013846140/
Part3 ttp://pc8.2ch.net/test/read.cgi/tech/1076418993/
Part4 ttp://pc8.2ch.net/test/read.cgi/tech/1140717775/
Part5 ttp://pc8.2ch.net/test/read.cgi/tech/1149263630/
Part6 ttp://pc11.2ch.net/test/read.cgi/tech/1162902266/
Part7 ttp://pc11.2ch.net/test/read.cgi/tech/1174211797/
Part8 ttp://pc11.2ch.net/test/read.cgi/tech/1193743693/
Part9 ttp://pc11.2ch.net/test/read.cgi/tech/1211010089/
Part10 ttp://pc12.2ch.net/test/read.cgi/tech/1231861873/
Part11 ttp://pc12.2ch.net/test/read.cgi/tech/1252382593/
Part12 ttp://hibari.2ch.net/test/read.cgi/tech/1272536128/
Part13 ttp://hibari.2ch.net/test/read.cgi/tech/1286706874/
Part14 ttp://hibari.2ch.net/test/read.cgi/tech/1299385928/
Part15 ttp://hibari.2ch.net/test/read.cgi/tech/1310199414/
0951デフォルトの名無しさん2012/01/02(月) 12:19:02.82
>>950
disられたってどういうこと?
0952デフォルトの名無しさん2012/01/02(月) 12:26:28.49
モナドは中身はともかく、どう書けるかって話だと確かに関数型捨ててるでしょ。
特にdoを使って書いてると手続き型とほとんど変わらんし、似たようなスパゲティ化もしやすいし。
0953デフォルトの名無しさん2012/01/02(月) 12:30:08.48
>>948
和田(笑)
0954デフォルトの名無しさん2012/01/02(月) 12:54:56.37
>>951
http://togetter.com/li/215803
ここにまとめられてる湯浅先生の発言を、
キチガイが拡大解釈して必死に広めてるだけ。

キチガイ死ねよ。
0955デフォルトの名無しさん2012/01/02(月) 13:02:10.78
>>948
こういう人は具体的に何故モグリなのか全然説明してくれないから説得力が全くない
権威主義の人って大体そんな感じ
0956デフォルトの名無しさん2012/01/02(月) 13:29:14.03
>>954
なんで自分で噂に根拠与えちゃってるの?
そのままほっとけば単なる噂ですんだのに。
0957デフォルトの名無しさん2012/01/02(月) 13:43:07.49
クロージャーとかジェネレーターの辺りで完結するべきだった。
最近の関数型はだらだら引き伸ばしているだけ。
0958デフォルトの名無しさん2012/01/02(月) 13:44:07.71
>>956
根拠のない噂を広める罪がわからないゴミカスのようなキチガイは死ねよ。
0959デフォルトの名無しさん2012/01/02(月) 14:06:34.63
>>952
つまり、プログラマが式をどう考えるかや、コンパイラが式をどう扱うかではなく、
式をどう書くかによって関数型かそうでないかを判断しているのか、お前は

じゃあ、お前の言う関数型を捨てた書き方である

do {x <- getLine; putStr $ "> " ++ x}

これを

getLine >>= putStr . ("> " ++)

こう書いたら、関数型に戻るのか?


あともう一つ、本当にdo表記で似たようなスパゲティ化が起きやすいのか?
お前はdo表記で頻繁にスパゲティ化してしまっているのか?

スパゲティ化という事は、実行順序、Haskellなら計算順序が複雑に絡まるんだよな
それはdo表記だから絡まるのか? むしろdo表記の方が絡みにくくないか?
0960デフォルトの名無しさん2012/01/02(月) 14:14:42.26
>>959
前者に関しては、俺の感覚ではイエス。
後者に関しては俺の書き方が悪かった。
手続き的なコードが縦にダラダラ長くなるとぐちゃぐちゃに見えてキモいってだけなんだ。
0961デフォルトの名無しさん2012/01/02(月) 14:27:45.34
好き嫌いだけで一歩も進んでないのな
0962デフォルトの名無しさん2012/01/02(月) 14:33:23.75
>>945
どんなもの達をもってきても、それらが「大体同じである」と見る視点はいくら
でも作れるわけだが、ListとIOとMaybeは大体同じだというモナドの視点はそんな
ナンセンスな視点ではないのだね?
0963デフォルトの名無しさん2012/01/02(月) 15:05:16.12
>>962
> そんなナンセンスな視点ではないのだね?

「そんな」がどんなのを指しているのか曖昧だな
もっとはっきりと言ってくれ

大体同じであるという視点はどのような集合に対しても適用できるけど、
「どう同じなのかが論理的に説明できる」ことと、
その視点が応用する上で「役に立つ」こと、
この2点が無いとせっかくの発見も後の時代まで残らない

モナドはとりあえず今のところ残ってる
0964デフォルトの名無しさん2012/01/02(月) 15:12:39.30
>>960
お前の手続き的なコードが縦に「ダラダラ長くなる」原因は何だ?
それはdo表記のせいなのか?

お前はもしかして、自分のコードがdo表記で縦にダラダラ長くなったら、
その原因がdo表記にあると考えて、getLine >>= putStr . ("> " ++)
みたいな表記に直すのか?

それとも、キモいって言うだけで、後が続かず終わってるのか?

もし本当にそうなら、関数型や手続き型うんぬんの前に、
プログラムそのもの構造を学んだ方が良いぞ(SICP なんか読みやすくてお勧め)
0965デフォルトの名無しさん2012/01/02(月) 15:26:49.59
>964
縦に長くならなくても、
do {x <- getLine; putStr $ "> " ++ x}
のxも、関数型からすれば嫌だろ。
0966デフォルトの名無しさん2012/01/02(月) 15:37:53.22
>>965
では構文的な構造が似ている

let x = 3 in f x

これも「関数型からすれば嫌」なのか?
0967デフォルトの名無しさん2012/01/02(月) 15:53:19.26
>>963
最初からモナドと言わずにリストと言えば通じやすかったと思うが。
0968デフォルトの名無しさん2012/01/02(月) 16:15:00.92
>>967
すまん、言わんとしていることがよく分からん
俺の発言の何に対する意見なんだ?

通じやすかったというのは世間にか? それともここ一連の会話の誰かにか?
前者なら最初から委員会の連中はリストはリストと言っている(モナドは後付け)
後者なら誰だよそんな事言ったの

俺は >>962
ListとIOとMaybeは大体同じだというモナドの視点はナンセンスかどうか、に対して、
モナドはどう同じなのかが論理的に説明できており、かつ役に立つ視点である、
だからナンセンスではない、という自分の考えを謂わば逆説的に述べただけだよ
0969デフォルトの名無しさん2012/01/02(月) 16:34:00.46
>>953
それはスーフリの方。
>>959
do表記は手続きっぽくなるから、スパゲティーメイカーになりやすいかも。
スパゲティーにするならせめてカルボナーラかミートソースにしてくれよ。
0970デフォルトの名無しさん2012/01/02(月) 16:36:45.39
手続きっぽくなるとスパゲティになる理由は?
ちゃんと自分の言葉で説明できるか?
0971デフォルトの名無しさん2012/01/02(月) 16:39:56.99
>>968
俺の方が曖昧な言い方ですまんかった。
まず通じやすかったというのは世間に対してという意味だった。
「ListとIOとMaybeは大体同じだ」というときの共通性が、言ってしまえばリスト化
(多元化)にあるのだとすれば、モナドなどというよりリストと言った方が
伝わり易いと思ったわけだ。また曖昧なこと言ったかな。
(ナンセンスうんぬんの方はもういいよ)
0972デフォルトの名無しさん2012/01/02(月) 16:57:05.72
>>971
あぁ、なるほどな

> 「ListとIOとMaybeは大体同じだ」というときの共通性が、
> 言ってしまえばリスト化(多元化)にあるのだとすれば、

そう解釈してしまったのなら、

> モナドなどというよりリストと言った方が伝わり易いと思ったわけだ。

と言うのも十分に分かる、というか当然の反応だ

ただ残念ながら、少なくとも「それらに見いだした共通性はリスト化だ」
という解釈に関しては間違っている(多元化の意味は分からんが)

Wadler氏が List、IO、Maybeなどにどのような共通性を感じたのかは
Monad型クラスの関数に間接的に表れてはいるが、俺の力ではとても一言で言えない
それこそちゃんと知るには彼の論文や基になったMoggi氏の論文を読まないといけない

ただ、一般的なプログラマには「Monad型クラスの関数がモナドに共通する構造だ」
と言いうだけで応用上は十分だと思う
その共通構造をモナドが応用される前のListやIOに見いだしたと言っていい
0973デフォルトの名無しさん2012/01/02(月) 18:16:38.74
>>972
よくわかってないが、非決定計算、副作用、継続についてはMoggiの最初の論文の中で定式化されてる。

共通性といいたいところは多分普遍的性質のことだろうと思う。
普遍性の構造が共通している、というかそれぞれモナドで整理可能だからモナドなんだろう。
0974デフォルトの名無しさん2012/01/02(月) 18:20:45.89
>>970
デバッグが困難になる。
0975デフォルトの名無しさん2012/01/02(月) 18:25:00.71
>>973
普遍的性質って具体的には?
0976デフォルトの名無しさん2012/01/02(月) 18:27:24.82
モノイダル圏におけるモノイド対象が存在すること
0977デフォルトの名無しさん2012/01/02(月) 18:33:35.46
>>975
ある一つの性質から全体の性質が定まることで、
モナドの場合はそれが入れ子状になっている、ようだ。
正直そんな説明できるほどわかってない。
0978デフォルトの名無しさん2012/01/02(月) 18:46:14.03
>>974
それは全く説明になっていないと思うぞ

>>970 が訊いているのは手続きっぽくなるとスパゲティになる理由だ

[1] 手続きっぽくなる --> [2] スパゲティになる

原因 [1] によって結果 [2] になることを筋道を立てて説明してほしいのだろう

しかし、デバッグが困難になるというのは、さらにその先の結果だ

[2] スパゲティになる --> [3] デバッグが困難になる

デバッグが困難になるからスパゲティになるのではない([3]-->[2])
スパゲティだからデバッグが困難になる([2]-->[3])
0979デフォルトの名無しさん2012/01/02(月) 19:24:23.52
>>977
フラクタル?
0980デフォルトの名無しさん2012/01/02(月) 19:36:37.35
>>978
飛躍してるように見えるがそれが結論だ。
0981デフォルトの名無しさん2012/01/02(月) 19:49:15.51
含意の推移法則を使うことが飛躍なのならばソクラテスが死ぬことも飛躍
0982デフォルトの名無しさん2012/01/02(月) 19:52:21.42
>>979
そういう方向には関与しないほうがいい。梯子はずしてくる人ばかりで構成されているから。
何事も普通の日常の出来事に置き換えて考えてみるべき。
日常の出来事として絶対おかしいと思うことなら、どのように脚色してもおかしい。
0983デフォルトの名無しさん2012/01/02(月) 20:03:55.42
ふむ。つまり0.999....は絶対に1じゃない、とするほうが正しいわけだな。
0984デフォルトの名無しさん2012/01/02(月) 20:05:53.17
選択公理の証明できた!
0985デフォルトの名無しさん2012/01/02(月) 20:11:31.78
>>982
もっと語ってくれないか。
そういう方向?梯子はずす?日常の出来事?
0986デフォルトの名無しさん2012/01/02(月) 20:20:36.64
>>985
勧誘系詐欺の大部分は友人や家族に自分が勧誘された内容を説明すると
途中で詐欺にあっていることに気づくそうだ。
閉じた環境でそれっぽくみえても実際まわりに説明して中身が無い、実効性がない
違和感が出るというか詐欺だと感じたらほぼ詐欺。
0987デフォルトの名無しさん2012/01/02(月) 20:36:23.14
フラクタル 日常 とくればムントさま
0988デフォルトの名無しさん2012/01/02(月) 20:50:27.04
>>986
詐欺?閉じた環境?
もう少し。
0989デフォルトの名無しさん2012/01/02(月) 21:01:55.91
>>988
これ以上はない、というか努力はわかるが聞き下手だな。
0990デフォルトの名無しさん2012/01/02(月) 21:21:18.74
>>983
きみが日常の出来事に照らして 0.999.... と 1 が同じではおかしいと感じるなら、
きみの解釈の世界ではそれが正しいのだろう

ただ残念ながら、一般に 0.999.... というのは
そういう数値そのものをダイレクトに表した記法ではない
0.999.... と続いて目指している目標となる数値を表している記法である
単に極限 lim を使った記法の構文糖衣(シンタックスシュガー)だ

ちなみに、0.999.... が目指している先はなんと 1 だったりする
0991デフォルトの名無しさん2012/01/02(月) 21:30:57.75
sum $ unfoldr (Just . second (/10)) (0.9::Rational)
0992デフォルトの名無しさん2012/01/02(月) 21:47:58.61
>>989
わかった、ことにするわ。
0993デフォルトの名無しさん2012/01/02(月) 21:53:45.46
新スレ立てるぞ、いいか
0994デフォルトの名無しさん2012/01/02(月) 22:00:24.52
ダメだた orz
0995デフォルトの名無しさん2012/01/02(月) 22:18:23.81
立てるわ
0996デフォルトの名無しさん2012/01/02(月) 22:21:00.43
関数型プログラミング言語Haskell Part17
http://toro.2ch.net/test/read.cgi/tech/1325510368/

馬鹿のゴミが入っちゃったけど、どうぞ
0997デフォルトの名無しさん2012/01/03(火) 03:59:10.10
0998デフォルトの名無しさん2012/01/03(火) 04:29:40.98
>>972
え?原典辿らずにエラソー言ってドヤ顔してたわけ?馬鹿だろ。
0999デフォルトの名無しさん2012/01/03(火) 04:33:37.91
>>959
やっぱそうだよな。
関数型言語って、スパゲティになりやすい。

宣言的で1つ1つ完結しているから理解しやすいとか馬鹿が言うけど、
実際には宣言的だからこそスパゲッティコードになる。
1000デフォルトの名無しさん2012/01/03(火) 04:34:20.32
HaskellはLISPの劣化コピー
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。