[過去ログ]
関数型プログラミング言語Haskell Part16 (978レス)
関数型プログラミング言語Haskell Part16 http://echo.5ch.net/test/read.cgi/tech/1317958045/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
849: デフォルトの名無しさん [sage] 2011/12/25(日) 19:12:41.64 >>847 > 副作用のある関数を一切使わずに ダウト。Haskell上の値としては副作用はないが、 裏でランタイムがちゃんと副作用を起こしている。 http://echo.5ch.net/test/read.cgi/tech/1317958045/849
850: デフォルトの名無しさん [sage] 2011/12/25(日) 19:16:51.65 >>846 モナドは副作用を保証してくれないから、 モナドだけではI/Oは不可能。 副作用をうまく取り扱うための枠組みを、 モナドは提供できているというだけの関係。 http://echo.5ch.net/test/read.cgi/tech/1317958045/850
851: デフォルトの名無しさん [sage] 2011/12/25(日) 19:16:52.65 厳密には何を以て副作用と言うかを(ここだけでも)統一されて議論すべきだが、 「Haskell上の値としては副作用はない」というのを副作用が無いと認識している Haskell プログラマは多いし、暗黙の了解になっていたりもする http://echo.5ch.net/test/read.cgi/tech/1317958045/851
852: [―{}@{}@{}-] デフォルトの名無しさん [sage] 2011/12/25(日) 19:16:53.25 >>846 なんか誤解してるような気がする 1. IOは、純粋さを保ったまま入出力するための型である 2. IOはMonadのインスタンスである この二つの事実が両方成り立つのは別に必然ではないという意味で「たまたま」と言った モナドにならない型で入出力を表現することはできる(ストリームIOとか)し、 入出力と関係ないモナドももちろんある つまりHaskellの入出力を理解するのにモナドを知っている必要はないし、(助けにはなるが) モナドを理解するのにIOを知っている必要もない(助けにはなるが) http://echo.5ch.net/test/read.cgi/tech/1317958045/852
853: デフォルトの名無しさん [sage] 2011/12/25(日) 19:16:55.59 いや、それはおかしいだろ OCamlで実装されたHaskellインタプリタだったらそのHaskellは純粋ではないことになるのか? http://echo.5ch.net/test/read.cgi/tech/1317958045/853
854: デフォルトの名無しさん [sage] 2011/12/25(日) 19:17:44.83 >>853は>>849宛 http://echo.5ch.net/test/read.cgi/tech/1317958045/854
855: [―{}@{}@{}-] デフォルトの名無しさん [sage] 2011/12/25(日) 19:18:27.47 >>849 そこを気にするなら、「副作用のある関数」を 「呼ばれて評価されたときに副作用を起こす関数」と読み替えてくれ http://echo.5ch.net/test/read.cgi/tech/1317958045/855
856: デフォルトの名無しさん [] 2011/12/25(日) 19:21:55.56 >>845 ありがと。ちょっと見てみるけどおれにはわからんだろな >>846 怒らんで >>847 >それ以外のモナドは全然別のことをする うん。そのときの共通性っていうの?それが知りたいんやが >副作用のある関数を一切使わずに入出力のあるプログラムが書ける ほんま?そんなことできるわけないやろ。なんかトリックなんやろ? http://echo.5ch.net/test/read.cgi/tech/1317958045/856
857: デフォルトの名無しさん [] 2011/12/25(日) 19:25:40.76 >849 から >>855 わ。レスポンスしたら他の兄さんらの難しい議論が始まって付いていけへん。 しばらく勉強や。 http://echo.5ch.net/test/read.cgi/tech/1317958045/857
858: [―{}@{}@{}-] デフォルトの名無しさん [sage] 2011/12/25(日) 19:30:01.84 >>856 >うん。そのときの共通性っていうの?それが知りたいんやが モナドの具体例(2〜3個)を知らない人に説明するのは難しい。俺にはできない >ほんま?そんなことできるわけないやろ。なんかトリックなんやろ? うん。おおさっぱに言うと、入出力をする関数がない代わりに、入出力をする変なもの(アクション)がある 関数とアクションは型が違うから、関数を見たらそれが入出力をしないことは保証されてる http://echo.5ch.net/test/read.cgi/tech/1317958045/858
859: デフォルトの名無しさん [] 2011/12/25(日) 19:32:00.64 >>850 >副作用をうまく取り扱うための枠組みを、モナドは提供できている どこで、なんで、それができてるんや?ちゅうのが知りたいんやな http://echo.5ch.net/test/read.cgi/tech/1317958045/859
860: デフォルトの名無しさん [sage] 2011/12/25(日) 19:39:14.42 自分は手下に命令しただけで、直接手を下していないことを 「俺は潔白だ」 というようなものだな。 MLのように自分が手を下した範囲をちゃんと自供するほうが ずっと罪は軽い。 http://echo.5ch.net/test/read.cgi/tech/1317958045/860
861: デフォルトの名無しさん [sage] 2011/12/25(日) 19:41:31.09 IO aをRealWorld -> (a,RealWorld)とみなした上で外延性から ∀ x :: IO a, ∃s.s' :: RealWorld. x s /= x s'について解釈することで参照透明性をもう少し厳密に言えないのかな http://echo.5ch.net/test/read.cgi/tech/1317958045/861
862: デフォルトの名無しさん [sage] 2011/12/25(日) 19:45:03.85 RealWorld型を導入しなくても参照透明にはなるよ IO a型の値をプリミティブにしたって良いし http://echo.5ch.net/test/read.cgi/tech/1317958045/862
863: [―{}@{}@{}-] デフォルトの名無しさん [sage] 2011/12/25(日) 19:45:45.33 >>860 実際にコードを読んだり(自動でも手動でも)最適化する場合に 直接手を下しているかどうかが重要になるんだから仕方ない http://echo.5ch.net/test/read.cgi/tech/1317958045/863
864: デフォルトの名無しさん [sage] 2011/12/25(日) 19:48:09.17 Moggiが表示的意味論(もちろんI/O、状態、並列などが扱われている)で 使われている技法に共通構造を見出した。 それがどんな構造かってのは、数学分からない人には、絶対に演繹的に理解できないです。 数々のMonadを体得することで帰納的に理解してください。 帰納的な理解だから身体動かさないと無理です。 頑張ってMonad入門を読みこなして、さらにプログラムを書いてください。 http://echo.5ch.net/test/read.cgi/tech/1317958045/864
865: デフォルトの名無しさん [sage] 2011/12/25(日) 20:02:04.02 茂木=サン http://echo.5ch.net/test/read.cgi/tech/1317958045/865
866: デフォルトの名無しさん [sage] 2011/12/25(日) 20:21:29.09 継続やストリームを使ったIOの表現よりも、 モナドを使ったIOの表現の方がシンプルで、処理を追いやすい IOモナドが作られた理由はこれに尽きるだろ http://echo.5ch.net/test/read.cgi/tech/1317958045/866
867: デフォルトの名無しさん [] 2011/12/25(日) 20:21:39.10 >>858 >>864 ああ、また見捨てられてしもた。いっつもこうや。わしに学がないばっかりに。 ふつうのプログラムはやってるから、あのIOやエラーは知ってるし、 Maybeなんちゅうのがあるらしいのも知ってるけど、そんなんじゃ 話がわからんちゅうこっちゃろな。 Monad入門ってどこにあるんですか? 今日は冷えるわ。 http://echo.5ch.net/test/read.cgi/tech/1317958045/867
868: デフォルトの名無しさん [] 2011/12/25(日) 20:27:46.78 >>861 問題意識がおもしろそう。 参照透明性が厳密に表現できると、モナドも厳密に表現できるのでは という動機? http://echo.5ch.net/test/read.cgi/tech/1317958045/868
869: デフォルトの名無しさん [sage] 2011/12/25(日) 20:36:19.03 IOモナドに関してはこれがいい。 特にボトムアップで理解したい人。実装について触れられてる。 http://haskell.org/haskellwiki/IO_inside http://echo.5ch.net/test/read.cgi/tech/1317958045/869
870: デフォルトの名無しさん [] 2011/12/25(日) 20:50:43.45 >>867 俺も学の無い人間だけど、モナドはOOPでいうインターフェースに当たる型クラスって機能を使って構築されてるって言えば何をしたいものか大体わかる? http://echo.5ch.net/test/read.cgi/tech/1317958045/870
871: デフォルトの名無しさん [sage] 2011/12/25(日) 21:58:46.16 Haskell で GUI のアプリ作った・作ってる人っている? http://echo.5ch.net/test/read.cgi/tech/1317958045/871
872: デフォルトの名無しさん [sage] 2011/12/25(日) 22:04:17.40 XMonadの拡張なら http://echo.5ch.net/test/read.cgi/tech/1317958045/872
873: [―{}@{}@{}-] デフォルトの名無しさん [sage] 2011/12/25(日) 22:10:00.15 オセロなら http://echo.5ch.net/test/read.cgi/tech/1317958045/873
874: デフォルトの名無しさん [sage] 2011/12/25(日) 23:04:12.41 >>872,873 Haskell でも MVC や Doc-View アーキテクチャが基本なの? Model あるいは Doc の部分ってどうやって実装してる? やっぱり IORef のようなミュータブルな IO モナドになっちゃうのかな http://echo.5ch.net/test/read.cgi/tech/1317958045/874
875: [―{}@{}@{}-] 873 [sage] 2011/12/25(日) 23:14:40.98 MVCっぽい感じだった モデルにはMVar使ってた http://echo.5ch.net/test/read.cgi/tech/1317958045/875
876: デフォルトの名無しさん [sage] 2011/12/25(日) 23:39:17.99 ちゃんと教えてあげなよ。 >>867 Schemeになるが、Semantic Lego http://citeseer.ist.psu.edu/viewdoc/summary?doi=10.1.1.31.2885 http://echo.5ch.net/test/read.cgi/tech/1317958045/876
877: デフォルトの名無しさん [sage] 2011/12/25(日) 23:46:03.80 インストール作業が非常に面倒だった記憶があるから、 インストールする前に訊きたいんだが、 以前 windows 上で wxHaskell を使ってた時は、 ghci では動かせず、動作を試すのにいちいちコンパイルしてたんだ 今(ghc 7.2.2、wx-0.12.1.6)でもそうなの? http://echo.5ch.net/test/read.cgi/tech/1317958045/877
878: デフォルトの名無しさん [sage] 2011/12/26(月) 01:50:40.57 >>867じゃないけど>>876面白いな モナドとモナド変換子を使ってプログラミング言語の意味を表現しておけば そこからその言語のインタプリタを自動生成してくれるのか http://echo.5ch.net/test/read.cgi/tech/1317958045/878
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 100 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.011s