- 1 名前:デフォルトの名無しさん [2015/04/09(木) 08:31:01.42 ID:4yjREsCN.net]
- 関数型プログラミング言語 Haskell について語るスレです。
,.-―: ̄`ー::::::::::、 /::::::::::::.::::::::::::::::::::::::::::`::、、 /::::::::::::::::::::::::::::::::::::::::::::::::::::::`、 l::::::::::::::::::::::::::::::::::::::::;':l:::::::::::\::l l:::::::::::::::::::::::::::::::::,,::::::::;-,:,::::::::::::::::l l::::::::::::::::,_,.::::,';::::::;:::::: :: l ::::::::::::::l l::::::::::/-/:::/-ニ,.::::/=,./::::::::::l ヽ:::: ´、ひ> ;: l .<ひ>' 、::::::::/ ヽ:::::  ̄ .)::; l  ̄ l::::/ < 毛の壁(岡部健)の話は禁止な 、:::::.. /:::; .,-、 l:::/、 ,―:::::::: ゝヽ- ー' 、 l::/,、ヽ l,、,、,,:、:: / ,--、,-.、_ l /::::::,、,、l l,、,、,、,、,、::、 `ー ̄-' /:::::::::::,、,、l l,、,、,、,、,、,、::ヽ /::::::::、,、,、,、,ノ:\ haskell.org (公式サイト) www.haskell.org/ 前スレ 関数型プログラミング言語Haskell Part27 peace.2ch.net/test/read.cgi/tech/1420718555/
- 712 名前:デフォルトの名無しさん [2015/06/30(火) 12:55:10.53 ID:g8mVBFW2.net]
- いや普通にwxHaskellでもなんでも使って書けるから。
ただ抽象化が巧く嵌らないから楽しくないだけ。
- 713 名前:デフォルトの名無しさん [2015/06/30(火) 15:13:39.82 ID:X6br0/jB.net]
- ウィンドウシステムで動く以上、オブジェクト指向が一番いいんじゃないの。
ウィンドウってオブジェクトそのものだし。
- 714 名前:デフォルトの名無しさん mailto:sage [2015/06/30(火) 17:14:12.45 ID:vxf+DpiB.net]
- メッセージを受け取る関数 Message -> IO () で引数をパターンマッチすればいいよ
Cのswitch文を使うウィンドウシステムと同じ
- 715 名前:デフォルトの名無しさん mailto:sage [2015/06/30(火) 18:20:38.25 ID:c40dQzwL.net]
- GUIどころかOSごとHaskellで書いた例:programatica.cs.pdx.edu/House/
- 716 名前:デフォルトの名無しさん [2015/06/30(火) 18:42:24.07 ID:X6br0/jB.net]
- >>706
2chで作ってたOSにも及ばない感じに見える。 世界の一流研究者が集って10年かけて作ったものがこれでは、Haskellの 実力が低いように見える。 ドヤって感じで出されると余計。 少なくとも2chで作ってたOSは、もう少し実用性があった。
- 717 名前:デフォルトの名無しさん [2015/06/30(火) 18:51:10.78 ID:X6br0/jB.net]
- 昔、JSはCの二倍速いとか、JavaはCの20倍速いとか言われてて、ベンチマークが
2chのスレに貼り付けられてた。 今のHaskellは同じような感じがする。 JSは、アプリケーションを拡張するのに使えばとても楽な言語だし、Javaは 互換性やわかりやすさに焦点をあてた言語。 良い部分を宣伝したらいいと思うのだけど、どうも原理主義の人は欠点を 否定することに一生懸命になる。 Haskellはこういうことに向いてないね、でも出来ないわけじゃないよって 位で良いんじゃないのかな。
- 718 名前:デフォルトの名無しさん mailto:sage [2015/06/30(火) 19:02:56.27 ID:c40dQzwL.net]
- >>706 言いたいことはわからなくもないが全然「一流研究者が集まって」ないからw
- 719 名前:デフォルトの名無しさん mailto:sage [2015/06/30(火) 19:04:08.01 ID:c40dQzwL.net]
- >>707 のまちがいスマソ
- 720 名前:デフォルトの名無しさん mailto:sage [2015/06/30(火) 19:10:15.18 ID:9foLA8yU.net]
- 2chのOSってhigeponが作ってたmonaでしょ。目的が違うし、実用性も同程度だと思うが。
そういえばhigeponさんも関数型erになったが最近どうしてるんだろう
- 721 名前:デフォルトの名無しさん mailto:sage [2015/06/30(火) 19:55:09.60 ID:FWhQ2ahg.net]
- Haskellが得意とする(向いている)アプリケーションとは何でしょうか。
また、なぜそれが他言語に比べてHaskellが有利だと言えるのでしょうか。
- 722 名前:デフォルトの名無しさん [2015/06/30(火) 20:01:42.67 ID:g8mVBFW2.net]
- >>712
構造を持ったデータの処理・操作。 理由は人智を超えない範囲で充実した型システム。
- 723 名前:デフォルトの名無しさん mailto:sage [2015/06/30(火) 20:34:52.77 ID:vxf+DpiB.net]
- リスクの高いアプリケーション
得意なことは何かではなく最悪のケースは何かを考えること 理由は型システム
- 724 名前:デフォルトの名無しさん mailto:sage [2015/06/30(火) 20:54:40.33 ID:FWhQ2ahg.net]
- >>714
リスクというのは人命ですか? もしかして医療関係のアプリケーションでよく使われていますか?
- 725 名前:デフォルトの名無しさん mailto:sage [2015/06/30(火) 21:54:36.59 ID:vxf+DpiB.net]
- 人命というのは何か違う気がする
単に死ぬことと意図的に殺すことを区別できなくなる
- 726 名前:デフォルトの名無しさん [2015/06/30(火) 21:57:27.47 ID:X6br0/jB.net]
- F-35にHaskellが使われたなら信じる。
- 727 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 00:19:00.28 ID:hCLvX6t9.net]
- >>699
>> 状態のセーブがすげー簡単 これどういう意味? MonadIOの中だったらどこでもliftIO でファイル保存アクション実行できるよ、ってこと?
- 728 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 08:39:27.15 ID:tJW6CsdE.net]
- >>704←固定観念に囚われてる愚か者の事例。
- 729 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 08:49:50.77 ID:wl+QWyy/.net]
- ちょこっとかじった初心者ですが、
型システムのおかげでバグが出にくいっていう長所は GUIアプリ作るときにも活かされますか?
- 730 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 09:37:31.97 ID:I91Dcp9K.net]
- >>720
Haskellつかったらバグが自動的に減るのではなく、 強力な型システムのお陰で、型レベルのバグがコンパイル時に 検出できるだけ。Cなんかではポインタへの誤ったキャストが コンパイルを通ってしまい実行時(システムが稼働したとき)にようやく 発見されるという惨事が相次いだので、コンパイル時に前倒し してエラーを補足できるという点が期待されていた。 現実には型が合っていても実装を間違うことはあるので、 Haskell使ったら「自動的に」高品質になるというのは完全嘘だと思ってる。
- 731 名前:デフォルトの名無しさん [2015/07/01(水) 10:28:08.57 ID:tOajYpeJ.net]
- 自分でHaskell書いたことのない奴が多すぎだろ
713くらいしかまともなこたえがない
- 732 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 11:45:24.51 ID:gMCljQ/I.net]
- >>720
GUIはコロコロ仕様が変わるので むしろバグっぽいコードも書けるというメリットのほうが大きい
- 733 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 11:45:40.65 ID:zqTVEjze.net]
- 型が強力なので、バグ以前に、適切な型を考えて、それに従って関数書けば
自然にプログラム書けて楽なことが多い。Type-directedプログラミングというか。
- 734 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 11:48:56.78 ID:zqTVEjze.net]
- >>718 いや単に状態が陽だから、何をセーブすれば良いかわかりやすい、というだけ。
まあGUIアプリに限った話ではないか。
- 735 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 12:00:05.77 ID:XEDFaQMZ.net]
- テスト駆動とかだったらテストをHaskellで書く筈だが
Type-directedはHaskellを書く機会を減らしてしまう諸刃の剣
- 736 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 14:49:29.48 ID:rMwDHu3x.net]
- Haskellで書けばバグが完全に駆逐できるという話をよく聞く。
Haskellは並列化が効率的に行えるのでC++の10倍速いと言う記事を見た。
- 737 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 16:22:48.22 ID:YQJkkFEW.net]
- リスクの最たる例が人命というなら、地球を一人の人間と捉えた場合、経済はその血流であろう。血流を止めると地球さんがヤバい
経済界に寄与するソフトウェアを他言語版より多く送り出しているならばHaskellはリスクと戦う最前線の言語だといえよう
- 738 名前:デフォルトの名無しさん [2015/07/01(水) 18:22:25.85 ID:NjN/zNsy.net]
- で、おまえらGUIアプリ書けるのか?
Haskellでカットアンドペーストできるエディタやペイントソフト書けんの?
- 739 名前:デフォルトの名無しさん [2015/07/01(水) 18:22:57.88 ID:NjN/zNsy.net]
- おまえらは「机上」でしか語れない
- 740 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 18:35:28.08 ID:wHMLdS0x.net]
- クリックカウンターおじさんのエミュレーションやめろ
- 741 名前:デフォルトの名無しさん [2015/07/01(水) 18:38:03.08 ID:tOajYpeJ.net]
- GUIライブラリのコンポーネント使っていいなら誰にだって書ける。
もちろんHaskellでも問題なく書ける。エディタでバイト列収納しとくための ロープから実装しろという話ならHaskellはかなり有利だ。
- 742 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 19:31:24.61 ID:W0dcBNHQ.net]
- >>730
確かに、机上の空論からのぶっつけ本番は非常に危険だ しかし机上を危険視するのは間違っている
- 743 名前:デフォルトの名無しさん [2015/07/01(水) 19:53:03.17 ID:XO0z7h0V.net]
- そもそも情報処理って机上がものいう世界だろ
- 744 名前:デフォルトの名無しさん [2015/07/01(水) 19:53:39.62 ID:XO0z7h0V.net]
- クリックカウンターおじさん本人なんじゃないか?
- 745 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 20:02:00.78 ID:I91Dcp9K.net]
- 机上の空論よりヘボくても動けるものを作れる奴が偉いとか典型的なマウンティング
- 746 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 20:16:46.99 ID:zqTVEjze.net]
- >>726 QuickCheck?
- 747 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 20:18:47.95 ID:zqTVEjze.net]
- >>727 それは嘘かhype
- 748 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 20:25:01.06 ID:N2f2t6hF.net]
- >>732
Haskellが凄いという話はよく聞く
- 749 名前:し、現代的なGUIエディタの実装に超有利という話も出てきた。
ところが、Haskellで書かれた著名なエディタは無いし、ライブラリやコンポーネントを使うなどと言うけど、 そのライブラリやコンポーネントはHaskellで書かれた著名なものがあるの? 極端な話、そんなに有利なら、Haskellで書かれたコンポーネントをそして APIを他の言語から使ってるんじゃないの。 凄い凄いという話をよく聞くものの、最終的にC/C++で書かれたライブラリを 呼び出せますよって話になる。 C/C++を呼び出してて本当にHaskellの凄いところであるゼロバグを実現できるの? 言っとくけど、C/C++は容易にバグが紛れ込むし、Haskellのようにゼロバグなんてことは無いよ? Haskellから呼び出すだけで、C/C++のバグも本当に消えるの? [] - [ここ壊れてます]
- 750 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 20:30:36.90 ID:WaFLqKtq.net]
- ぐうの音もでん
- 751 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 20:35:48.17 ID:hkSyx5v6.net]
- C/C++ラッピングに頼るのは、国産OSを開発せずWindowsやUnixやLinuxに頼るようなものだ
Haskellネイティヴなライブラリへの置き換えが必要ではないか
- 752 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 20:40:40.77 ID:RlBRpOsX.net]
- >>739 誰もそんなこと言ってない。
どこかよそで読んだなら、まともな話かどうか判定するからソース教えて
- 753 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 20:45:43.16 ID:hhCpaelW.net]
- この世界、技術的に良いものが必ずしも広まらないことは日常茶飯事。
逆に、マイナーだから優れている、も成り立たないが。
- 754 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 20:56:44.98 ID:4S8xRTlr.net]
- >>739
Haskellで自動回避できるのは型の不整合にまつわるバグであって、算法上のバグを回避できるわけじゃあないよな システム記述言語としてのHaskellは、他言語に比べて特に凄いということはないよ 動かしながらバグを取る必要があるのはC/C++と同じ
- 755 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 20:59:56.29 ID:WaFLqKtq.net]
- まあ、最近Facebookが出して世間を賑わしてるリアクティブプログラミングも元はHaskellで作られたやつだ。
あと、テストライブラリのQuickcheckも色んな言語に輸出されてるね。 思うんだけど、Haskellerのみんなの興味が、売れるアプリ、広く使われるソフト、 で必要とされるもんとズレてんじゃないかな。 1. その言語を使える技術者の確保が容易 2. ハード(スマホ)の最新機能がすぐ使える、 ドキュメントが豊富
- 756 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 22:46:09.54 ID:SBuzyDQs.net]
- ArrowがあればMonadは要らんのやな
最初からArrowにしとけばよかったやん
- 757 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 22:54:31.49 ID:hkSyx5v6.net]
- 元はHaskellで作られたのに実践は他言語だったの?
Haskellは何か実践的開発上の問題を抱えてるの?
- 758 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 23:08:08.48 ID:1n3wggjU.net]
- つまんない煽り愛してないでまともな話しろ
- 759 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 23:09:21.21 ID:WaFLqKtq.net]
- >>747
もちろんHaskellのリアクティブライブラリもそれなりに使えるもんだったし、以降今に至るまで派生ライブラリがたくさん作られた。 でも、javascriptの方がより賑わっていて(開発者が多くて)Facebookにも資金力がとても高い、ってことさ。 つまり、Haskellの弱さは人がいないことだ、と俺は思う。 なぜ人がいないかは、理由は色々あるけど、外から見て何が得意なのかがよくわかんないつーのが大きくて、それはHaskellでの目に見える成果があんまり無いからで、その理由は人がいないからで、つまり
- 760 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 23:32:51.19 ID:W0dcBNHQ.net]
- >>747
逆に他言語で実践できない部分にガラパゴス化という問題があるとも言える ガラパゴスが強いと思うか弱いと思うかは人それぞれ
- 761 名前:デフォルトの名無しさん [2015/07/01(水) 23:50:13.91 ID:j1v8qj3k.net]
- つまりクリックカウンターおじさんの言ってることは正しい面もある、と?
- 762 名前:デフォルトの名無しさん [2015/07/02(木) 01:00:22.82 ID:xB5xsyxT.net]
- 言語仕様の話がしたいのか、ライブラリ群の話がしたいのか。
- 763 名前:デフォルトの名無しさん mailto:sage [2015/07/02(木) 01:43:36.68 ID:0H4A+sBi.net]
- 技術的内容を理解していない知ったかぶりの言葉遊びは無用。よそでやれ
- 764 名前:デフォルトの名無しさん mailto:sage [2015/07/02(木) 06:15:08.75 ID:0QJ6vZJG.net]
- 言葉遊びをやめさせるには沈黙するインセンティブが必要
黙秘権とか 逆に、対案を出せなど沈黙しないことが強く求められれば言葉遊びはもっと酷くなる
- 765 名前:デフォルトの名無しさん [2015/07/02(木) 09:19:10.46 ID:RsQjnldo.net]
- ”クリックカウンターおじさん”という名誉棄損の呼び名を確認。
- 766 名前:デフォルトの名無しさん mailto:sage [2015/07/02(木) 09:50:57.63 ID:L8xarZNp.net]
- クリックカウンターのような状態遷移をHaskellでは作れないという批判?
- 767 名前:デフォルトの名無しさん [2015/07/02(木) 10:03:54.46 ID:u7x11Nqb.net]
- クリックカウンターおじさんの問題提起については評価しないとだめだな。
- 768 名前:デフォルトの名無しさん mailto:sage [2015/07/02(木) 10:28:08.52 ID:zhB7tSAg.net]
- 環境構築(cabal)がクソでライブラリを探すのも入れるのも更新するのも面倒くさいってのも有ったんじゃない
Stackでどうなるか
- 769 名前:デフォルトの名無しさん mailto:sage [2015/07/02(木) 11:10:25.42 ID:e+SQ5knv.net]
- 著者が挙げている「クリックカウンター」や「お絵かき」の類を作成するのに特別なexpertiseは不要で、
単に使用するGUIライブラリ・グラフィックスライブラリのドキュメントが読めれば充分なので、 その趣旨は私にはまったく判然としません(当該の記事で著者がOCamlで「お絵かきロジック」を 実装してみせよと要求する一方で自身ではJavaScriptによるそれを公表していない点も気になります)。 もちろん、OCamlであれHaskellであれ破壊的代入の類の副作用を使用せずに書くのもなんら困難ではありません。
- 770 名前:デフォルトの名無しさん mailto:sage [2015/07/02(木) 13:57:23.04 ID:y1SlVF6x.net]
- 字数増やせば賢く見えるわけじゃないんですよ
- 771 名前:仲本だいすけ [2015/07/02(木) 15:06:12.36 ID:ZQFEgiVc.net]
- あの疑似科学野郎を黙らせるのになぜ半年もかかったのか?
- 772 名前:デフォルトの名無しさん mailto:sage [2015/07/02(木) 17:11:55.72 ID:L8xarZNp.net]
- >>758
環境のクソさのお陰でわりと布教しづらかったので stack にはマジ期待してる >>759 なんら困難ではない。。。かなぁ???
- 773 名前:デフォルトの名無しさん [2015/07/02(木) 17:35:08.64 ID:xB5xsyxT.net]
- 破壊的代入なしで書くのは別に困難じゃないだろ。
入出力そのものを副作用だと言い出すならどんな言語でも無理だしな。
- 774 名前:デフォルトの名無しさん mailto:sage [2015/07/02(木) 17:46:38.81 ID:FcRiDZyX.net]
- >>759
当事者ご降臨ですかw 確かに保身第一、全く相手にしてませんが何か?っていう答え方だな
- 775 名前:デフォルトの名無しさん mailto:sage [2015/07/02(木) 18:22:32.80 ID:aW/wUO6R.net]
- >>761
おまえらの不徳の致すところ
- 776 名前:デフォルトの名無しさん mailto:sage [2015/07/02(木) 18:30:48.79 ID:e+SQ5knv.net]
- おいおい、単に qiita.com/nonstarter/items/2763f5d85f2b8df3b18b からのコピペだぞ。検索もできんのか…
- 777 名前:デフォルトの名無しさん mailto:sage [2015/07/02(木) 18:55:57.21 ID:y1SlVF6x.net]
- 宣言型プログラミング言語スレで脳内設定エスパーしろとな
- 778 名前:デフォルトの名無しさん [2015/07/02(木) 19:00:17.41 ID:xB5xsyxT.net]
- Ocamlアイドル @no_maddo 24時間
追記部分があるのを知らなかった、めっちゃ面白かったです 関数型言語 - 『関数型プログラミングに目覚めた!』のレビュー(Day-1) on @Qiita qiita.com/nonstarter/items/2763f5d85f2b8df3b18b … kenokabeさんの謎クリックカウンタとお絵かきのネタは仙台でも大人気だ!
- 779 名前:デフォルトの名無しさん mailto:sage [2015/07/02(木) 19:26:05.17 ID:gqhA8KsA.net]
- これが何に使えるのかよくわからない。
- 780 名前:デフォルトの名無しさん mailto:sage [2015/07/02(木) 21:46:14.33 ID:E90eWw9y.net]
- >>766-767
その程度のために Googleモナドを持ち出すなど軟弱な
- 781 名前:仲本だいすけ [2015/07/03(金) 01:48:03.52 ID:RZmOyo0m.net]
- ,.-―: ̄`ー::::::::::、
/::::::::::::.::::::::::::::::::::::::::::`::、、 /::::::::::::::::::::::::::::::::::::::::::::::::::::::`、 l::::::::::::::::::::::::::::::::::::::::;':l:::::::::::\::l l:::::::::::::::::::::::::::::::::,,::::::::;-,:,::::::::::::::::l l::::::::::::::::,_,.::::,';::::::;:::::: :: l ::::::::::::::l l::::::::::/-/:::/-ニ,.::::/=,./::::::::::l ヽ:::: ´、ひ> ;: l .<ひ>' 、::::::::/ ヽ:::::  ̄ .)::; l  ̄ l::::/ 、:::::.. /:::; .,-、 l:::/、 :::::::: ゝヽ- ー' 、 l::/, ,:、:: / ,--、,-.、_ l / 、::、 `ー ̄-' / 、::ヽ /: r‐''''^¨^⌒ ̄ ̄ ̄ヽ ,ノ`, \ ノ/ ヽ ι.} λ ) ヽ(,. ノ! r' ( l .,/ ノ,,,,,,,,,,,,,,,,,,,,,,,,,,,,丿へ ノ ,) ( ∵ ∧∵ /,,丿 \,,,,/人\__ノ / ( ) (__) ( ) 《 l (___) 《 ̄ ̄》 《__(____) 《____》
- 782 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 03:37:23.69 ID:aag7hyI7.net]
- 180°回る首
- 783 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 08:29:08.65 ID:8+5j5k8x.net]
- >>761
相手が弱者だと思って戦いを始めるやつは撤退する口実を作れないから泥沼化する 強敵ならいつでも撤退を正当化できるのに
- 784 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 08:38:57.07 ID:R0ApVOfB.net]
- >>763
入出力は副作用でしょ普通 入出力無しにGUIを描くと言ってるのと同じで矛盾してる
- 785 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 08:39:40.10 ID:uImfavx2.net]
- あほか
- 786 名前:デフォルトの名無しさん [2015/07/03(金) 08:41:04.32 ID:wl7u/SNJ.net]
- >>774
意味論による。
- 787 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 08:46:11.05 ID:R0ApVOfB.net]
- >>776
言ってる事が理解できないので詳しく 入出力で参照透過性を維持できる説明もよろ
- 788 名前:デフォルトの名無しさん [2015/07/03(金) 09:04:39.28 ID:wl7u/SNJ.net]
- >>777
IOモナドの仕組みくらい自分で調べたらよろしい。 そして、グラフ書換系のどこにも副作用なんかない。
- 789 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 09:11:48.16 ID:R0ApVOfB.net]
- >>778
グラフ書換系はGUIとは関係ないだろう はぐらかさないで説明ヨロ
- 790 名前:デフォルトの名無しさん [2015/07/03(金) 09:15:30.38 ID:wl7u/SNJ.net]
- >>779
IOモナドは世界状態RealWorldを取るStateモナドと同じ意味論を与えることができる。 Stateモナドに副作用がないのと同様にIOモナドはモナドにも副作用はない。これが1。 IO a を RealWorld -> (RealWorld, a) と元の形に直した上で Haskellのグラフ書換系上で入出力がどう見えるか考えてみればいい。これが2。 これでわからんなら私のせいではない。
- 791 名前:仲本だいすけ [2015/07/03(金) 09:46:07.14 ID:6Fdm7Fxt.net]
- 疑似科学おじさんまだいるの?病院行こうよ
- 792 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 09:57:24.37 ID:p7lUbcZE.net]
- 岡部氏の「もっと世界観を」には賛成。
しかし関数プログラミングやFRPは銀の弾ではないとも思う。 なぜこうも銀の弾が出てこないのか?
- 793 名前:デフォルトの名無しさん [2015/07/03(金) 10:02:29.75 ID:Iifsm05F.net]
- そんな事より毛ブログがなんで更新されないのかな?
- 794 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 10:17:59.41 ID:R0ApVOfB.net]
- >>780
グラフ書換系からモナドがどう見えるかは関係ない 実際にIOモナドから値を取り出し、副作用を伴う処理を使う際 参照透過性を維持できるという説明をよろしく
- 795 名前:デフォルトの名無しさん [2015/07/03(金) 10:19:49.54 ID:vDmQcknf.net]
- まあとりあえずこれを読めよ
d.hatena.ne.jp/kazu-yamamoto/20090627/1246135829
- 796 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 10:26:38.47 ID:R0ApVOfB.net]
- >>785
そのリンク先の説明は理解できるが 今レスしている人はどの趣旨の説明でもない
- 797 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 10:26:38.81 ID:R0ApVOfB.net]
- >>785
そのリンク先の説明は理解できるが 今レスしている人はどの趣旨の説明でもない
- 798 名前:デフォルトの名無しさん [2015/07/03(金) 10:28:25.82 ID:wl7u/SNJ.net]
- IOモナドの表現getCharが複数あってもRealWorldの値が違うので
決してノードが共有されないことに気が付かなかったんですかねえ。 グラフ書換でノードが共有されることと参照透過性との関係が 理解できてない可哀想な子だったか。
- 799 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 10:32:05.52 ID:R0ApVOfB.net]
- あ、すまん確かに3と同じ事いってるね
タプルをRealworld aと勘違いしてた
- 800 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 10:39:21.05 ID:R0ApVOfB.net]
- >>788
よく読んでいなかったよ謝る
- 801 名前:仲本だいすけ [2015/07/03(金) 10:48:00.79 ID:Dt4z3lub.net]
- >>782
ThinkDifferent(笑)
- 802 名前:デフォルトの名無しさん [2015/07/03(金) 10:49:58.03 ID:aSIkPSGQ.net]
- 駱駝さん、アホに構ってんと、仕事しようよ…
- 803 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 11:24:59.81 ID:p7lUbcZE.net]
- > Haskell には副作用はない。なぜなら、Haskell が作るのは命令書のみで、それが実行されるのは Haskell の外での話だからだ。
そういえば、この解釈は酷い解釈だったな
- 804 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 11:35:30.05 ID:8+5j5k8x.net]
- >>793
・副作用は定義した時ではなく実行時に発生する ・引数 (RealWorld) は関数を定義した時ではなく呼び出した時に渡される ほぼ同じ内容だ 同じ内容に優劣をつけるのは言葉遊びだ (遊ぶなとは言っていない)
- 805 名前:仲本だいすけ [2015/07/03(金) 11:39:29.06 ID:TviClge2.net]
- 楽しいから続ける(笑)
- 806 名前:仲本だいすけ [2015/07/03(金) 12:04:29.45 ID:ri2L7Lgt.net]
- ,.-―: ̄`ー::::::::::、
/::::::::::::.::::::::::::::::::::::::::::`::、、 /::::::::::::::::::::::::::::::::::::::::::::::::::::::`、 l::::::::::::::::::::::::::::::::::::::::;':l:::::::::::\::l l:::::::::::::::::::::::::::::::::,,::::::::;-,:,::::::::::::::::l l::::::::::::::::,_,.::::,';::::::;:::::: :: l ::::::::::::::l l::::::::::/-/:::/-ニ,.::::/=,./::::::::::l ヽ:::: ´、ひ> ;: l .<ひ>' 、::::::::/ ヽ:::::  ̄ .)::; l  ̄ l::::/ < 排便ダン 、:::::.. /:::; .,-、 l:::/、 ,―:::::::: ゝヽ- ー' 、 l::/,、ヽ l,、,、,,:、:: / ,--、,-.、_ l /::::::,、,、l l,、,、,、,、,、::、 `ー ̄-' /:::::::::::,、,、l l,、,、,、,、,、,、::ヽ /::::::::、,、,、,、,ノ:\ /⌒\〆', `  ̄ ´ ゝ/⌒\ / ノつ\ ・ ・ /⊂ ヽ! o0○ノ / 3 \ (::::⌒ヽ / とノ\ ヽ○0o ( /、_ノ\ Y `(_、_) / \´ )゚ \_) `ヽ : :;;*:; : : : | (_ノ 人__;;:;;、___ノ ヽヽ ヽヽ ;:;;:;;:;,, ──┐ | | ──┐ | | ∬ ;;:;::.;::.::;::..:;:..: ∬ / | | /. | | ・〜 ;::;.:;:;:;:;:.:;:.:::.;:;:;.:.:.: ノ ノ ┐ ノ ノ ┐ ∬;;;:::;;;:;:.:;:.::.:;;.:.;.:;.:; ∬ ┴ ヽヽ ┴ :"
- 807 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 12:15:29.28 ID:p7lUbcZE.net]
- >>794
ほぼ同じ内容だろうが、それらはどれも酷い解釈だと思うよ
- 808 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 12:36:08.66 ID:IUu1So5+.net]
- 何が酷いの? IOが一級値である以上、最も正確な解釈だと思うが。
- 809 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 12:38:18.64 ID:InleWrcM.net]
- むしろそれ以外に、実際の実行結果に合う解釈はあるのか?
- 810 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 15:16:07.46 ID:msRG1Yik.net]
- >>796
顎の両脇の部分が、後ろで済ませたとぐろ糞に見える
- 811 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 15:58:45.53 ID:Vi+qPEKL.net]
- Prelude> let x = putStrLn "hello" in x >> x
hello hello Prelude> let x = putStrLn "hello" in seq x x hello Prelude>
- 812 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 19:01:10.98 ID:V10CPSDi.net]
- 型=値の集合と思ってると IO でラップされた型は一体どんな値なのかと気にしてしまうんだね。
|

|