問題タブ [io-monad]

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 に答える
92 参照

haskell - Haskell: IO と [] によるモナド スタック バインド

私は持っている:

そして、私はしたいです

しかし、私のタイプはオフです。私は本質的にリフトバインドをしたいのですが、私が試みるすべてが微妙に間違っています.

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

haskell - Haskell IO do ブロックで割り当てを結合および分割する

私は、IO モナドを含む、do ブロックでの変数代入の仕組みに関する 2 つの場所で、言語について同様の誤解をしていると/思います。(1)それは同じ誤解ですか、(2)それを解決する方法を理解するのを手伝ってもらえますか(回答で、特にこの件に関するお気に入りの参照がある場合)?

すべてが 1 行の場合は操作を正常に実行できますが、読みやすくするために 2 つに分割しようとするとうまくいきません。

パート I: 1 行を 2 行にする

なぜこれが機能するのですか?

しかし、これは機能しません

私に与えます:

最初と 2 番目の違いは、クエリ部分を q に格納しようとしていることです。

パート II: 2 行を 1 行に

なぜこれが機能するのですか:

しかし、これは機能しませんか?

私に与えます

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

haskell - Haskell & Scrypt: 暗号化されたハッシュを取得する方法

*初歩的な質問ですみません、Haskellを学び始めたばかりです。

文字列を取得して暗号化されたハッシュを返す関数を作成しようとしています。

現時点で私が思いついたのは次のとおりです。

ただし、次のエラーが表示されます。

どうすればIOを取り除くことができますか?

ありがとう!

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

haskell - ExceptT a IO のようなモナド スタックでリソースを管理する最良の方法は何ですか?

良くも悪くも、Haskell の人気のあるServantライブラリにより、 を含むモナド変換子スタックでコードを実行することが一般的になりましたExceptT err IO。サーバント自身のハンドラーモナドはExceptT ServantErr IO. 多くの人が主張するように、展開に失敗するには複数の方法があるため、これは動作するのがやや面倒なモナドです: 1) ベースからの通常の例外を介して、または 2) を返す。IOLeft

Ed Kmett のexceptionsライブラリが役立つように次のように説明しています。

継続ベースのモナド、およびErrorT e IO複数の失敗モードを提供するようなスタックは、この [ MonadMask] クラスの無効なインスタンスです。

これは、リソース管理を行うための便利な [のポリモーフィック バージョン] 関数にMonadMaskアクセスできるため、非常に不便です (例外などによるリソースのリークはありません)。bracketしかし、サーバントのHandlerモナドでは使えません。

私はあまり詳しくありませんが、解決策はmonad-control多くのパートナーライブラリを使用することでありlifted-baselifted-asyncモナドに次のようなリソース管理ツールへのアクセスを許可することであると言う人もいますbracket(おそらくこれはExceptT err IO友人にも機能しますか?)。

しかし、それはコミュニティで支持を失ってmonad-controlいるようですが、代替案が何であるかはわかりません. Snoyman の最近のライブラリでさえ、Kmett のライブラリを使用し、.safe-exceptionsexceptionsmonad-control

Haskell を真剣に使用しようとしている私のような人々のために、誰かが現在の話を明確にすることができますか?

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

haskell - Haskell の mapM での実行順序

次の Haskell ステートメントを検討してください。

実際、これは「1」、「2」、「3」を順番に出力します。

質問:最初に "1" を出力し、次に"2" を出力し、最後に"3"を出力することをどうやって知ることmapMができますか? これを行うという保証はありますか?それとも、GHC の奥深くで実装されているのは偶然ですか?