問題タブ [monadplus]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
336 参照

haskell - 安全な部分関数はなぜ Monad に一般化する代わりに Maybe を使用するのですか?

一部の人々が間違いだと考えていることは知っていfailますが、その理由はわかります。(それを置き換えるために MonadPlus が作られたようです)。しかし、それがある限り、部分関数が and の代わりに and を使用することは理にかなっているようfailpure思えJustますNothing。これにより、現在できることすべてを実行できるようになるためsafeHead、従来のJust/Nothingまたは代わりに[x]/を返すことができます[]

私が読んだことからMonadPlus、 を使用するよりも優れているように思えfailます。しかし、私はそれについて確実に言うのに十分な知識がありません。また、おそらく Prelude に引っ張ることも含まれるでしょう。これは良い考えかもしれませんが、単に使用するよりも大きな変更になるでしょうfail

したがって、私の質問は、なぜ部分関数がfailORMonadPlusを使用しないのかということだと思います。どちらも具象型を使用するよりも優れているようです。

0 投票する
1 に答える
185 参照

haskell - 「たぶんmzeroリターン」の名前はありますか?

の確立された名前はありmaybe mzero returnますか?

次のタイプがあります。

と に変換NothingJust areturn aます。

0 投票する
3 に答える
198 参照

haskell - [Maybe Bool] から、Just が 1 つ以上含まれていることが保証されている Bool を取得する

typeの入力list と type[Maybe SomeType]の述語pがあり、 「述語はたまたま入力にあるすべてSomeType -> Boolの s に適用されますか?」という質問に答えたいと思います。.pSomeType

最初の部分は簡単です:(map . fmap) p listタイプは[Maybe Bool]です。

1 つの重要な情報は、私がそれを知ってlength list >= 1おり、all isNothing list == False両方が成り立つということです。したがって、少なくともJust Trueinが存在する必要があります(map . fmap) p list

Boolしかし、そのリストからシングルを 1 つ引き出すにはどうすればよいでしょうか。

私は、次のようなことをして、折りたたみ (例: 経由foldl) とMaybeMonadPlusインスタンスを利用できると考えました:

が何であるかmplusに関係なく左オペランドを返すため、入力が であってもが返されるためです。Just somethingsomethingallTrueOrNothingTrue[Just True, Just False]

タスクを達成できる最もクリーンで慣用的な方法は何ですか?

単純にs をfilter取り出してからsを組み合わせることができることがわかりました。次のようになります。NothingandJust

しかし、それらの s がその内容を認識してMaybe Boolいるように動作させる方法があるかどうかを知りたいと思っていました。MonoidBool