問題タブ [monads]

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 投票する
2 に答える
1575 参照

scala - インタープリターでモナドを使用するポイントは何ですか?

私は最近、モナドを使用したシンプルなインタープリターと呼ばれるこの小さなscalaの例を発見しました:

ここでのモナド計算の使用/利点は何ですか? 実際、Mは恒等モナドに他なりません。これはモナド構文の例を示すために導入されたものですか、それとも重要な効果がありますか?

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

haskell - Haskell -- 「'do' コンストラクトの最後のステートメントは式でなければならない」

タイトルにあるように:どういうThe last statement in a 'do' construct must be an expression意味ですか?私が見たいくつかの例に示されてdoいるように、ブロックを終了しましたが、エラーが発生しました。putStrLn

コード:

0 投票する
5 に答える
1161 参照

haskell - モナドでブレークスルーをもたらしたプログラミング タスクは何ですか?

マーク・ドミナスは、彼が書いた確率モナドに関する最近のブログ投稿で、「モナド的に、やっとたどり着いたような気がする」と書いた。

私の最初のモナド プログラムは、プロジェクト オイラーの問題 32parsecMaybe モナドを使って解決するというぎこちないものでした。

最終的に光があなたのために点灯したとき、あなたは何に取り組んでいましたか? 少なくとも、作成したコードのスケッチを提供してください。あなたが今知っていることを知って、それをどのように改善しますか、そしてその理由は何ですか?

0 投票する
18 に答える
10475 参照

java - クラス Option[T] のポイントは何ですか?

Option[T]Scalaのクラスのポイントがわかりません。Noneつまり、 overの利点がわかりませんnull

たとえば、次のコードを検討してください。

ここで、メソッドが をgetPerson1返し、 の最初の行でnull行われた への呼び出しが で失敗するとします。同様に、 return の場合、呼び出しは同様のエラーで再び失敗します。displaymainNPEgetPerson2Nonedisplay

もしそうなら、なぜ ScalaOption[T]は Java で使用される単純なアプローチに従うのではなく、新しい値ラッパー ( ) を導入することによって物事を複雑にするのでしょうか?

アップデート:

@Mitchの提案に従ってコードを編集しました。の特定の利点はまだわかりませんOption[T]null例外的な場合、またはNone両方の場合をテストする必要があります。:(

@Michaelの返信から正しく理解できた場合、唯一の利点は、このメソッドが None を返す可能性がOption[T]あることをプログラマーに明示的に伝えることですか? これがこのデザインの選択の背後にある唯一の理由ですか?

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

haskell - モナド変換器と複数のモナドのスタッキング

私は署名付きの関数とf署名付きの関数を持っていますf :: [a] -> StateT Int Reader b [c]f'f' :: a -> StateT Int Reader b [c]

f の計算 (非常に単純化されています) は次のようになります。

[c]そしての代わりに…の部分のx ++部分[c]yモナドのものを巻きつけて返したいと思います。
手動でアンラップせずにそれを達成し、手動で結果を再度まとめる可能性はありxますyか? 単純なコードを取得するには、モナド スタックの一番下に List モナドが必要ですか? Reader モナドは明らかに MonadPlus クラスのインスタンスではありません。

0 投票する
7 に答える
5254 参照

functional-programming - 純粋関数型プログラミングでIOを使用するためのモナドの代替手段は何ですか?

モナドは、IOを処理するためのhaskellソリューションとして説明されています。純粋な関数型言語でIOを処理する他の方法があるかどうか疑問に思いました。

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

haskell - ParsecでのMonadErrorの使用

MonadErrorをParsecと一緒に使用しようとしています。私は次のコードスニペットを思いついた:

ただし、 catchErrorretLeft "SomeError"効果がないようです。ここでMonadErrorを使用する正しい方法は何ですか?

たとえば、次の場合のように、Parsec自体のエラー処理よりもMonadErrorを使用したいと思います。

ここでparser1が失敗した場合、parser2は続行されますが、解析を完全に中止する例外があります。

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

haskell - HaskellとContT、callCCとの混同

ContTと友達を理解するための継続的な探求。以下の(ばかげているが説明的な)コードを検討してください。

このコードはコンパイルされません。ただし、をその下のコメント付きk呼び出しに置き換えるwhenと、コンパイルされます。どうしたの?

または、x2行をコメントアウトすると、コンパイルも行われます。???

明らかに、これは元のコードの蒸留バージョンであるため、すべての要素が目的を果たします。何が起こっているのか、そしてそれを修正する方法についての説明的な助けに感謝します。ありがとう。

0 投票する
2 に答える
952 参照

multithreading - モナド関数で parMap を使用するにはどうすればよいですか?

私は単項関数 getRate を持っています:

この関数を文字列のリストにマップしたいと思います。通常は、次のようにします。

しかし、getRate への呼び出しごとにネットワーク呼び出しが行われるため、マップを並列化し、各レートが個別のスレッドでフェッチされる (または少なくともキュー間で分散される) ようにしたいと考えています。みたいなことを考えている

ただし、parMapM 関数はなく、parMap はモナド関数では機能しません。

私に何ができる?

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

haskell - 折り畳みによるモナドアクションの合成

type の関数を考えてみましょう(Monad m) => a -> m a。例えば:

何度でも応募できるようにしたいです。最初に試したのは

問題は、大規模な場合は機能しないことですn:

他の方法でも機能しません:

実際、機能するのは($!)厳密性演算子を使用することです

より良い、またはより慣用的な解決策はありますか? それとももっと厳しいものですか?f重い関数の場合でも、スタック オーバーフローが発生しやすいです。

UPD:ポイントフルな形式で書いtimesても、重いモナドアクションを作成する問題を解決できないことがわかりました。これは fx = Just (x+1) で機能しますが、現実の世界では失敗します: