- 関数型プログラミング言語Haskell Part29 [転載禁止]©2ch.net
459 :デフォルトの名無しさん[sage]:2015/09/09(水) 00:14:15.49 ID:15Wbqaqp - あなたがそう思うならそれでいいんじゃないの
誰が関数型言語使えと頼むじゃなし使わないと死ぬわけでもなし
|
- 関数型プログラミング言語Haskell Part29 [転載禁止]©2ch.net
462 :デフォルトの名無しさん[sage]:2015/09/09(水) 02:07:49.07 ID:15Wbqaqp - >>461
>データ構築子がreturnとbindしか無くて、一方分解子、runの類いがたくさん提供されてるデータを考えてくれ。 なにが言いたいのか理解できないが、いずれにせよreturn とbind があれば 他のはそれから定義できるんだからなにも問題ない runXXの類がたくさん提供されてる、というのもよくわからんが、 それで有用性が損なわれるとはちっとも思えない
|
- 関数型プログラミング言語Haskell Part29 [転載禁止]©2ch.net
463 :デフォルトの名無しさん[sage]:2015/09/09(水) 02:09:55.95 ID:15Wbqaqp - あと、データ構築子とreturn/bindは違うものなんでそこのところ宜しく
もし、returnでしか当該データ型の値が作れないならrunXX云々以前にそりゃ役には立たない m a 型の計算が実質的に a 型の計算そのものに崩壊するからな
|
- 関数型プログラミング言語Haskell Part29 [転載禁止]©2ch.net
465 :デフォルトの名無しさん[sage]:2015/09/09(水) 02:39:48.87 ID:15Wbqaqp - >>464
>だからモナドにするならreturn以外にカスタムコンストラクタをたくさん提供するべき。 いやまったくもって意味不明なんだけど 普通に型定義のデータ構築子がある以上、それを使えばいいんだし、 それらのデータ構築子から構成できないようなものもあり得ない しかもなんで「べき」なわけ? Maybe型が役に立たなかったことなんかないだろう あと、勝手な自分用語振り回されても理解できない(するきになれない)
|
- 関数型プログラミング言語Haskell Part29 [転載禁止]©2ch.net
469 :デフォルトの名無しさん[sage]:2015/09/09(水) 03:13:59.62 ID:15Wbqaqp - データ構築子を公開したくない、というのはわかる
パターンマッチで実体取り出されたくないとき (実体に依存した利用をされたくないとき)、というのはあるからな だが、「return に加えて」は意味不明だ 作ろうとするモナドが恒等モナド以上の何かであろうとする限り、 returnでは作れないようなモナド値を構成する方法を提供しなければならない これは内部表現の隠蔽云々とは何の関係もない そうしないと使いづらいからではなく、そうしないと恒等モナド以上の 機能を有し得ないから、だ fromJustを使わない(データ構築子 Just のパターンマッチも使わない)、 というなら、コード全体がモナディックになってしまう (もちろんnon-monadicなコードは恒等モナドによってまったく等価な monadicなコードとして書けるが、普通はそんなことはしない) はっきりいって、何が言いたいのか本当にわからない……
|
- 関数型プログラミング言語Haskell Part29 [転載禁止]©2ch.net
471 :デフォルトの名無しさん[sage]:2015/09/09(水) 03:20:21.85 ID:15Wbqaqp - >>468
>例えば、doの途中でrunして値を取り出して、その値で分岐して別のモナディックアクションにつなぐのは、計算量が無駄。 >それを避けるためにモナド(手続きの抽象)がある、と俺は理解している。 計算量(?)はほぼ変わらず、コードが見やすくなるだけだ むしろ、コードの煩雑さを苦にしないならば 最初からモナドの実体を直接操作する方が余計な関数呼び出しと そこでいう意味の「計算量」は減る -- オーダー以外の意味で「計算量」を使われるのも違和感があるが
|
- 関数型プログラミング言語Haskell Part29 [転載禁止]©2ch.net
473 :デフォルトの名無しさん[sage]:2015/09/09(水) 03:27:24.33 ID:15Wbqaqp - >>472
Reader モナドで、逐一runReaderを使い r->a 型関数に戻すのが手間だ、 くらいの意味だろう。そりゃモナドの中で計算を合成できる方がいいしが、 指摘の通り、手間や関数適用コストの僅かな定数的増大よりは、文脈を切らずに 連続させることの利益が目的でdo 記法を使うはずだ、と私も思う。
|
- 関数型プログラミング言語Haskell Part29 [転載禁止]©2ch.net
479 :デフォルトの名無しさん[sage]:2015/09/09(水) 11:44:28.09 ID:15Wbqaqp - Monadにはできない(或いは非効率)だけど、Functorよりは強い構造を
持ってる有用なデータ型が多いことがHaskellでのプログラミングの進展に よって後になってから判明したから 後付で用意されたんで、元からあるMonadの定義には手を付けなかった
|
- 関数型プログラミング言語Haskell Part29 [転載禁止]©2ch.net
483 :デフォルトの名無しさん[sage]:2015/09/09(水) 20:48:31.78 ID:15Wbqaqp - FFIのためにCに揃えてメモリ剥き出しでデータ配置してる場合のことでしょ
|