[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 2chのread.cgiへ]
Update time : 04/25 05:23 / Filesize : 232 KB / Number-of Response : 786
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 22:19:28.26 ]
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/
Part16 ttp://toro.2ch.net/test/read.cgi/tech/1317958045/

82 名前:デフォルトの名無しさん [2012/01/04(水) 23:48:28.90 ]
>>79
>father(son(x)) = x
>これは、左辺にある x に対する2個の(この順の)変換が右辺と同等である
>という事を示していると思う
うん。だがそれはその式を単にそのまま読んだだけだと思うんだ。
なにが言いたいんだこの式は?何が言えてるんだこの式は?とは思わな
いかい?
まあそういうことなんだが、皆さんイライラしているようだし、この辺
で寝るよ。かまってくれてありがとう。

83 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 23:55:17.37 ]
f(g(x)) = xという形の等式が直感的に何を意味するかは慣れないと分かりにくい
でも一旦慣れれば問題なくなるし、
この内容を簡潔に表現するにはこの式しかないと思うようになる(f . g = idもあるけど)
モナド則も似たようなもんじゃね

84 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 00:09:23.77 ]
俺が分からないのはお前らのせいって言いたいだけじゃん。

85 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 00:22:26.47 ]
>>82
> だがそれはその式を単にそのまま読んだだけだと思うんだ。
> なにが言いたいんだこの式は?

全く逆だ

「x に対して2個の変換 son と father をこの順で適用したものは x と同等である」

という、たまたま今は日本語で表された 「意味」 が何よりも先に先にある
(この意味を人に伝えるには何かの言語で表す以外ないから、たまたま日本語で表した)

この意味を数式という言語で表せば father(son(x)) = x となる
この意味を英語という言語で表せば・・・
この意味をヒンドゥー語という言語で表せば・・・お任せする

モナド則も意味が先にあって、それをHaskellの式で表す方法のひとつとして >>59 がある
他にも >>68 の様に表す方法もあるし、もしその意味を日本語で表すなら・・・

ということだ

86 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 00:31:08.78 ]
もしかして数学の定義を使って証明したことがないじゃなかろうか?

87 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 03:04:58.01 ]
関手fmapと自然変換returnと自然変換joinが「モナド」になる
っていうのが一番簡潔で直接的なモナド則の書き方

>>= は \f->\g->join (fmap g f)によって定義できる二次的なもの

88 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 03:54:01.40 ]
[1] join . join == join . fmap join
[2] join . return == id == join . fmap return

89 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 14:48:38.07 ]
犬論で拳論でもいいけど、謙論を忘れずに。

90 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 14:52:37.50 ]
>>49
計算論 計算可能性とラムダ計算
買ってみようと思う。
他におすすめある?



91 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 14:55:33.27 ]
プログラミングの道具としての圏論ならばalgebra of programming一冊各種証明を手で追いながらみっちりやれば充分

92 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 15:20:01.29 ]
中古で六万かよ

93 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 15:49:55.57 ]
>>92
Amazon.com 本店(米)の中古はもっと酷い 916.21 ドル

でも、Amazon.co.uk なら中古が 20 ポンドで売ってる(国際便もあるみたい)

94 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 17:09:38.32 ]
大学講義の離散数学で単位ギリギリとった俺は>>49くらいがちょうどいいかな

95 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 17:47:12.97 ]
もしそれが恥ずかしくないのなら、>>49 でもやばいかも

96 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 17:49:28.01 ]
 ttp://blog.ezyang.com/2012/01/why-iteratees-are-hard-to-understand/

MITの学生さんだって。みな頑張れ

97 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 17:53:03.61 ]
>>91-3
どうせ大学の図書館探したら転がってるだろうから、みることは可能だろうよ。

98 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 18:37:14.15 ]
お前らは何百年同じ話を続けるつもりなんだ?

99 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 18:46:42.96 ]
あと1億年と2000年間

100 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 18:51:23.55 ]
いや、あと数年で終わらせるから待ってろ



101 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 19:17:34.36 ]
>>99
8000年過ぎた頃からもっと繰り返したくなった

102 名前:デフォルトの名無しさん [2012/01/05(木) 20:56:35.84 ]
>>87
そうだね。
>>86
むしろ定義しか使わん。公式を使ったことはあまりないが。
>>85
>「x に対して2個の変換 son と father をこの順で適用したものは x と同等である」
数学世界の閉じこもりならそれでよいが、それでは世間と話ができんだろ。
>>84
理解できてる、理解できてない、なんてことはまあつまらんことだ。

103 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 22:02:39.10 ]
85-86への返答からだと、
何を分かってないのか分からんのじゃないかと思う。

104 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 22:14:39.66 ]
>>102
[1] モナド則の意味をできるだけ平易な日本語で表現してほしいのか、
[2] 単にライブラリドキュメントに書かれたモナド則の表現が遠回しだと言いたいだけか
[3] それ以外の事が言いたいのか

[1] なら素直にそう言え

[2] なら言いたいだけ言っていれば良い

[3] ならハッキリと意思を伝えろ

105 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 22:18:19.52 ]
この人はもう無理だろ
ネタでやってるとしか思えないぐらい質問が要領を得ない

106 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 22:49:24.22 ]
定義に従うのもいいけど、定義のないものは徹底的に無視するのも数学では重要だと思う
Haskellの範囲で定義されていないことをわざわざ調べて付け足す必要はない

107 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 23:04:55.33 ]
モナドじゃないけど、adjunctionの定義は「何が言いたいんだ?」ともどかしかったなあ。
あのhom(FY,X) = hom(Y,GX)という定義式がなぜねじれた形になってるのか、
ずっと疑問だった。

108 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 10:40:36.54 ]
腐: ホモだから

109 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 10:59:56.72 ]
ほむほむ

110 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 12:54:31.23 ]
随伴なんて単なる関手の圏における同型な対象にすぎない



111 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 15:20:01.72 ]
ttp://ja.wikibooks.org/wiki/Haskell/%E5%9C%8F%E8%AB%96
圏論知らないなりに↑の説明読んだんだけど、
>モナド は圏から同じ圏へいくつかの追加の構造を提供する特殊な関手
ってところにちょっと引っかかったので2点質問させてください。

1.例えばInt と Maybe Intは別の圏に存在する対象だと読みながら勝手に想像してたんだけど、
この説明からいくと同じ圏に属していると考えてOK?
あるいは、Dまでいかない、C'ぐらいの内部的な圏みたいな概念がもしかして存在する?

2.Haskellにおいて圏から別の圏への変換にあたる操作って、具体的には何なんでしょう?

112 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 16:06:41.22 ]
1.同じ圏の対象とも別の圏の対象とも考えることは可能。
そのリンク先ではHask圏という、Haskellの型が対象で関数の値が射とする圏を考えているので、
その文脈の限りではIntとMaybe Intは同じ圏の対象だと考えて良い。

2.Functor型クラスがHask圏からHask圏への変換(自己関手)を表現していると考えられる。
class Functor (f :: * -> *) where
fmap :: (a -> b) -> (f a -> f b)
この定義の内、f :: * -> *のところがHask圏の対象である型を、別の型に写像する関数を表現している。
また、fmap :: (a -> b) -> (f a -> f b)のところが射を写像する関数を表現している。

113 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 16:15:39.92 ]
>>112
ありがとうございます、1については多分納得しました。
2は質問が悪かったです。
自己関手ではなく、明確に別の圏と考えられるものに変換しているような関手の具体例が
Haskellにあれば教えて欲しかったのです。

114 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 16:31:14.92 ]
普通の型と[a]のようなリスト型が別の圏の対象であると解釈すれば
Functor型クラスが別の圏に変換する関手だ、と考えることもできるよ。
何を圏と考えるかの問題。

115 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 16:36:15.59 ]
>>114
書いてから、何を圏とするかで変わるよな、とは思ったのですが意図を汲み取って頂けて嬉しいです。
Hask圏で考えると、Haskellにおいて別の圏にあたる概念はなさそうですね(?)。

116 名前:デフォルトの名無しさん [2012/01/06(金) 16:45:49.97 ]
>>107
それ俺も分からない。なぜ?

117 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 16:48:49.32 ]
Hask圏のサブセットを別の圏と考えたりして色々考えることはできそう。

118 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 20:58:56.44 ]
?一気にレベル上がったな
>>115
よくわからんが、型を集合(Set圏の対象)と考える場合、HaskellのFunctorは
型から型(集合から集合)への対応で、Set圏で完結していると考えられるから
基本無理なんじゃない?
あるとしたら集合からなにか別の対象を構成して圏自体を構成するとか必要になるのじゃないかと思う。

119 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 21:59:44.43 ]


 東京にある6つのキー局の内、製作から財務まで一貫して朝鮮人が行ってるテレビ局が1つ
 中国共産党から毎年大量の反日工作費が流れているテレビ局が2つ
 もろに北朝鮮と繋がっているテレビ局が1つ  
年寄はまだまだテレビという外国人に騙され続ける


120 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 22:17:19.97 ]
>>116
>>110



121 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 22:37:50.72 ]
説明してくれ。

122 名前:デフォルトの名無しさん [2012/01/07(土) 01:57:09.16 ]
まだやってんのか?

123 名前:デフォルトの名無しさん [2012/01/07(土) 13:33:31.17 ]
>122
Let's join us!

124 名前:デフォルトの名無しさん mailto:sage [2012/01/07(土) 14:49:07.40 ]
>>59
[1] flip(>>=) f . return == f
[2] flip(>>=) return . f == f
[3] flip(>>=) g . flip(>>=) f == flip(>>=) (flip(>>=) g . f)
この定義から分かることは
f と g と return には flip(>>=) を適用できること
flip(>>=) f の戻り値の型は f の戻り値の型と同じ (引数の型だけ変わる) ということ

つまり、戻り値の型は変えられないが引数の型は変えられるようなものを表現したいんだと思う

125 名前:デフォルトの名無しさん [2012/01/07(土) 15:59:51.70 ]
>>124
うん。勿論[1]-[3]は、>>=やfなどの型についてのそういう制約を前提にして
いるが、[1]-[3]はそれ以上の条件を表現しているよね。

126 名前:デフォルトの名無しさん mailto:sage [2012/01/07(土) 16:31:12.63 ]
>>125
== が成立する条件が難しいと思う
f==g なら f の型と g の型は等しいとは思うが、それ以上は難しい

127 名前:デフォルトの名無しさん mailto:sage [2012/01/07(土) 23:46:02.70 ]
== を「型が等しい」と解釈するならモナド則は自明
別の意味があるなら == を定義するべき

128 名前:デフォルトの名無しさん [2012/01/08(日) 09:04:29.08 ]
>>107 >>110
hom(X,Y) = hom(FX,FY)

129 名前:デフォルトの名無しさん mailto:sage [2012/01/08(日) 10:07:40.92 ]
それはほむ関手と普通の関手Fの合成関手

130 名前:デフォルトの名無しさん [2012/01/08(日) 10:39:44.40 ]
Y:=(1/F)W



131 名前:デフォルトの名無しさん mailto:sage [2012/01/08(日) 11:54:54.22 ]
式だけ書いておけば後は汲みとれるはずだというやつは本当に大嫌いだ。
まさしくクソメン。

132 名前:デフォルトの名無しさん mailto:sage [2012/01/08(日) 12:05:09.42 ]
>>131
だからさ、詳しく説明して欲しいのなら素直にそう言えって何度言ったら・・・

説明を求めていないのなら無視しろよ

133 名前:デフォルトの名無しさん mailto:sage [2012/01/08(日) 12:08:42.39 ]
ほむの中でFが増殖する気持ち悪い関手

134 名前:デフォルトの名無しさん mailto:sage [2012/01/08(日) 12:10:29.13 ]
違うね。これはそういう問題じゃない。
それに無視して暗に黙認を形成することは少なくとも俺には絶対にできない。
そういう表明だ。

135 名前:デフォルトの名無しさん mailto:sage [2012/01/08(日) 12:16:57.29 ]
そもそもスレチだ。

136 名前:デフォルトの名無しさん mailto:sage [2012/01/08(日) 12:17:54.40 ]
>>134
黙認しないのなら、しっかり質問しろ

お前は「嫌いだ」としかまだ言っていない
嫌いだと表明するだけでは残念ながら何も起きないぞ

式だけ書いておけば・・・と言っておきながら、
その式について何も訊いていないだろ
>>130 にとっては、お前がこの式の何が分からないのかが分からない状態だと思うが


137 名前:デフォルトの名無しさん mailto:sage [2012/01/08(日) 12:21:07.73 ]
もう構うなよ…
この人は自分で調べないから絶対に具体的な質問出来ない人だよ

138 名前:デフォルトの名無しさん mailto:sage [2012/01/08(日) 12:24:51.53 ]
>>136
何か起こす?そんなの期待してるから何も出来ないんだよ。

そもそも圏論はスレ違いだ。

139 名前:デフォルトの名無しさん mailto:sage [2012/01/08(日) 12:32:03.12 ]
別に説明して欲しい訳じゃなくて、>>130のやりかたがコミュニケーションとして酷いといってるんじゃないの

140 名前:デフォルトの名無しさん [2012/01/08(日) 12:34:44.10 ]
けんかはやめてくれ。みんな俺が悪いんだから。



141 名前:デフォルトの名無しさん mailto:sage [2012/01/08(日) 12:49:17.63 ]
わかればいいが、普段からそんな話の展開をしてるなら改めたほうがいい。

142 名前:デフォルトの名無しさん [2012/01/08(日) 13:05:02.48 ]
>>141
不粋だな

143 名前:デフォルトの名無しさん mailto:sage [2012/01/08(日) 13:07:29.45 ]
template haskellの機能を使ってモジュール内で定義されてる関数の名前全部取得するような事ができるみたいなんだよ
これをどうやって実現してるかというと、どうやら展開時に自分自身が記述されてるファイルをIO使って読み込んで解析してるらしい
よく聞くコンパイルタイムIOという空恐ろしいものはこうやって使うのかといういい実例だと思ったね

144 名前:デフォルトの名無しさん mailto:sage [2012/01/08(日) 13:15:03.18 ]
>>143
template haskell って地味に良い拡張機能だよな
HaskellDB で使って実感したわ


対応した IDE ができるともっと良いが

145 名前:デフォルトの名無しさん [2012/01/08(日) 13:20:27.44 ]
まともなIDEがない時点でC以下

146 名前:デフォルトの名無しさん mailto:sage [2012/01/08(日) 14:15:39.33 ]
IDE で C と比べたって意味無いよ

IDE で言語選ぶわけじゃないし

147 名前:デフォルトの名無しさん mailto:sage [2012/01/08(日) 14:16:43.08 ]
ghc-modじゃ不足でしょうか、、、

148 名前:デフォルトの名無しさん mailto:sage [2012/01/08(日) 14:55:26.81 ]
文句あるなら造れ
そして英雄となれ

149 名前:デフォルトの名無しさん mailto:sage [2012/01/08(日) 14:56:05.77 ]
IDEで言語選ばないの?
あなたはIDEで言語を選ばないの?
多くの人はIDEで言語を選ばないの?
すべての人はIDEで言語を選ばないの?

150 名前:デフォルトの名無しさん mailto:sage [2012/01/08(日) 15:02:26.58 ]
ドカタが仕事にありつける言語にはIDEがある、が正解



151 名前:デフォルトの名無しさん mailto:sage [2012/01/08(日) 15:03:00.33 ]
量化を取り除くと自己言及の誤謬に陥るのでNG

152 名前:デフォルトの名無しさん mailto:sage [2012/01/08(日) 15:15:52.21 ]
>>147
ghc-mod って、template haskell に対応してたっけ

たとえば、Template haskell のチュートリアルに

-------------------------------
module TupleReplicate where
import Language.Haskell.TH
tupleReplicate :: Int -> Q Exp
tupleReplicate n = do id <- newName "x"
return $ LamE (VarP id)
(TupE $ replicate n $ VarE id)
-------------------------------

という例がある

$(tupleReplicate 2) が a -> (a, a) という型の関数
$(tupleReplicate 3) が a -> (a, a, a) という型の関数
と ghc-mod は教えてくれる?

言っておくが、ghc-mod がクソとか役に立たんと言ってるわけではない

153 名前:デフォルトの名無しさん mailto:sage [2012/01/08(日) 15:19:15.80 ]
>>152
やったことないです、、、
@kazu_yamamotoさんに聞いてみルトいいかも

154 名前:デフォルトの名無しさん mailto:sage [2012/01/08(日) 15:25:29.61 ]
IDE有る無しで開発効率に影響するのなら、
もちろん言語選択時に考慮するだろ

155 名前:デフォルトの名無しさん mailto:sage [2012/01/08(日) 15:27:02.91 ]
統合開発環境の「統合」って、最近流行った「絆」と同じセンスだよね

156 名前:デフォルトの名無しさん mailto:sage [2012/01/08(日) 15:36:00.48 ]
C#とかは言語設計段階からIDEと相性良くなるように考えられてると感じる

157 名前:デフォルトの名無しさん mailto:sage [2012/01/08(日) 15:40:42.17 ]
>>152
foo = $(tupleReplicate 2)と展開した上で名前に束縛すればfooについて当然型名がかえって来るけど
確かhaskellのインタプリタ(not ghci)が走ってるプロセスを持ってて
バッファの内容を食わせた上で指定した文字列でそいつに問い合わせてるから、
トップレベルで名前を持ってない定義だと上手く参照してくれないんじゃないかと思う


158 名前:デフォルトの名無しさん mailto:sage [2012/01/08(日) 15:59:20.60 ]
勝って兜の緒を締めよ開発環境

159 名前:デフォルトの名無しさん mailto:sage [2012/01/08(日) 17:11:37.66 ]
>>118
> よくわからんが、型を集合(Set圏の対象)と考える場合、HaskellのFunctorは
> 型から型(集合から集合)への対応で、Set圏で完結していると考えられるから
> 基本無理なんじゃない?

結局は、解釈、モデル化の仕方の問題だけど、
関数以外のArrowクラスのインスタンスを射として考えるならば、
それはHask圏=Set圏の射ではないから、
Hask圏の部分圏と考えることはできない圏を考えていることになる

160 名前:デフォルトの名無しさん mailto:sage [2012/01/08(日) 19:13:49.14 ]
震災前

     /::::::::::::::::::::::::::::::;;::ノ ヽ;::\
    /::::::::;;;;;;;;;,,,;;...-‐''"~    ヽ:;::l
     |:::::::::::|    岡田 異音    |ミ|
     |:::::::/     ,,,  ヽ,、   '|ミ|  
     '|:::::::l    '''""   ゙゙゙゙`   |ミ|
       |:::::|.  ,,r ‐、   ,, - 、  |/
     ,/⌒|  ノ ・ _), (. ・ `つ|
     | (   "''''"    |"'''''"  | 
      ヽ,,.        ヽ    |
       |       ^-^_,, -、   |   
         |    _,, --‐''~    ) |  マニフェストもう守れない。どうしよう・・・・ 
         'ヽ  (   ,r''''''‐-‐′ / 


震災後

     |:::::::::/            |ミ|
     |::::::::|   ,,,,,    ,,,,,   |ミ|
     |彡|.  '''"""''   ''"""'' |/
     /⌒|  -=・=‐,   =・=-  |
     | (    "''''"   | "''''"  |  
     .ヽ,,         ヽ    .|  キリッ
        |       ^-^    |
   .     |     ‐-===-   |   大震災が起こったのだからマニフェストの破綻も致し方ありません
         ,\.    "'''''''"   / 
朝鮮民主党
     おわり



161 名前:デフォルトの名無しさん mailto:sage [2012/01/09(月) 20:15:30.30 ]
すっごい初心者ですまないんだけど

x=10
x=11

これってHaskellでどう書くの?

162 名前:デフォルトの名無しさん mailto:sage [2012/01/09(月) 20:19:11.15 ]
書けない

163 名前:デフォルトの名無しさん mailto:sage [2012/01/09(月) 20:36:13.49 ]
>>161
関数型は変数の意味が違うよ。適当な教科書を読んでみましょう

164 名前:デフォルトの名無しさん mailto:sage [2012/01/09(月) 20:41:21.78 ]
こう書くんだよ

main = do
let x = 10
let x = 11
print x

165 名前:デフォルトの名無しさん mailto:sage [2012/01/09(月) 21:27:31.04 ]
>>164
サンクス

166 名前:デフォルトの名無しさん mailto:sage [2012/01/09(月) 23:34:33.20 ]
>>164をこう↓できると思ったんだけど無理だった、何故?
main =
 let x = 10 >>
 let x = 11 >>
 print x

167 名前:デフォルトの名無しさん mailto:sage [2012/01/10(火) 00:08:36.44 ]
>>166
do
let ***
###

これは、プリプロセッサで次のように変換される

let *** in do ###

これを踏まえて考えれば・・・

168 名前:デフォルトの名無しさん mailto:sage [2012/01/10(火) 07:53:20.13 ]
2-3 Finger Tree を閃いた奴、発想が良いな

169 名前:デフォルトの名無しさん mailto:sage [2012/01/10(火) 09:41:18.37 ]
民主党には朝鮮人など外国人のなりすまし、スパイが約90名在籍している

野田内閣は過半数が帰化人

野田はどうだろうか
韓国人から賄賂を貰い、韓国人の集いに出席している野田は


170 名前:デフォルトの名無しさん mailto:sage [2012/01/10(火) 15:47:47.65 ]
>>158
東郷開発環境wwwwwww



って誰か言ってくれると思ったのに。。。



171 名前:デフォルトの名無しさん mailto:sage [2012/01/10(火) 19:42:08.90 ]
申し訳ありませんでした

東郷開発環境wwwwwww

172 名前:デフォルトの名無しさん mailto:sage [2012/01/10(火) 20:31:46.91 ]
G13型トラクターか...

173 名前:デフォルトの名無しさん mailto:sage [2012/01/11(水) 03:08:02.86 ]
東郷開発環境wwwwwww

174 名前:デフォルトの名無しさん mailto:sage [2012/01/11(水) 18:47:00.09 ]
論理的な発想ができない連中がなぜHaskellのスレッドにいるのか不思議。

175 名前:デフォルトの名無しさん mailto:sage [2012/01/11(水) 18:55:22.75 ]
論理的思考と等式推論を使えることに相関は無い

176 名前:デフォルトの名無しさん mailto:sage [2012/01/11(水) 19:22:23.15 ]
>>167
こうか
main =
 let x = 10
 in let x = 13
    in print x

つーかこの式って(>>)か(>>=)を使って表現出来ないの?
副作用にはモナドを使うんじゃないの? わかんないです><

177 名前:デフォルトの名無しさん mailto:sage [2012/01/11(水) 19:25:03.27 ]
>>175
勝手に変な方向に誘導するなよ
>>174 は論理的な思考ではなく「発想」と言っている

発想、つまり ヒラメキ☆ だ

178 名前:デフォルトの名無しさん mailto:sage [2012/01/11(水) 19:25:13.02 ]
letはλ抽象でモナドを使った式は関数適用
ラムダ計算の項としてみたら全く別物

179 名前:デフォルトの名無しさん mailto:sage [2012/01/11(水) 19:32:06.33 ]
>>176
そう

最後の print 関数が副作用を持っている
だから「この」 main関数の型は IO () だ

君はちゃんと副作用にはモナドを使っているんだよ
なにが分からん?

> つーかこの式って(>>)か(>>=)を使って表現出来ないの?

もしかして、こういうこと?

main = return 10 >> return 13 >>= print

180 名前:デフォルトの名無しさん mailto:sage [2012/01/11(水) 22:20:24.86 ]

800 自分:名無し募集中。。。[] 投稿日:2012/01/08(日) 22:00:50.04 0
AKBブーム捏造の裏

サウンドスキャンの売り上げでさえほとんどが業者の自社買い他社買いで
資金洗浄した金額がオリコンの枚数×CDの価格って感じかね
livedoor.blogimg.jp/dqnplus/imgs/f/f/fff69a26.jpg





181 名前:デフォルトの名無しさん mailto:sage [2012/01/11(水) 23:18:15.23 ]
>>176

同じことをC言語で書くとこんな感じ

void main() {
 const int x = 10; {
  const int x = 13; {
   printf("%d", x); }}}

副作用があるのは最後のprintfだけ。
途中のx=13は代入ではなくてたまたま名前が同じ新しい定数の定義。

182 名前:デフォルトの名無しさん mailto:sage [2012/01/11(水) 23:52:21.03 ]
Haskellでオブジェクト指向ってどうやるの?






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<232KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef