問題タブ [do-notation]

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

maybe - PureScript の do 表記から Maybe 値を返すにはどうすればよいですか?

do 表記を使用する関数から Maybe 値を返そうとしていますが、うまく動作しないようです。この関数は、文字列 (「ファイル名」) と検索するパスを受け取ります...

どこ...

しかし、「Count not match Type Array with type Maybe」というエラーが表示され続けるため、コンパイラは do 表記が配列を返すことを期待しているようです。多分値を返すにはどうすればよいですか?

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

haskell - カスタム データ型とパラメーターの比較

私は Haskell を学んでおり、このプログラムを実装しようとしています。カスタムデータ型があります

getInput次に、このタイプの値を返すメソッドがあります。

今、このタイプの値をディスパッチする方法が混乱しています。方法があります

入力がNumber x

私も使用しようとしcaseました:

のインスタンスも作成しようとしましEq

caseカスタム データ型をパラメーターと比較したり、ブランチに複数のステートメントを含めるにはどうすればよいですか?

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

haskell - f 単独の代わりに (_ <- f) を使用しますか?

この ZeroMQ HelloWorldClient.hsコード スニペットを見ると、次のようになります。

_ <- receive requesterと書かない理由はありますreceive requesterか?

また、一般的に、代わりに_ <- f(where ) を使用する理由はありますか?f : Monad m => m af

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

haskell - State モナドを使った典型的な関数で、 put コマンドは何をしますか?

これはhttps://wiki.haskell.org/All_About_MonadsStateの例です。モナドを 使用StdGenして一連の乱数生成コマンドに値を通す例です。return最後のものが正しく機能することを理解していれば、値として新しいモナドを作成するだけです。xしかし、put g'実際には何をするのでしょうか? g'実際に失われないのはなぜですか?

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

haskell - Haskell パーサー コンビネータ - do 記法

パーサー・コンビネーター・ライブラリーの構築に関するチュートリアルを読んでいて、よくわからない方法に出くわしました。

これは、オペレーターbindの実装です。関数(>>=)の仕組みがよくわかりません。chainl1私が見ることができるものfからop、抽出してから適用してf a b再帰しますが、タプルのリストを返す必要があるときにパーサーから関数を抽出する方法がわかりませんか?

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

haskell - モナド脱糖ハスケル

実世界の Haskell でのモナドに関する章を読む。do 表記の脱糖に出くわしました。特にpattern <- action.

上記の例は、次のように脱糖されます。

let 句に 2 つのパターン マッチング ケースを含める方法を理解するのに苦労していますか?

同じ let 句にf patternandを含める方法がわかりません。f _let 節に複数のパターン マッチを含めることができるかどうかを調べてみましたが、私が見た限りでは、ほとんどの人が case ステートメントを使用しています。

ここで実際に何が起こっているのかを理解するのに助けが欲しいですか?

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

haskell - Haskell - 奇妙な do ブロック動作

MonadPlusに関するHaskell Wikibookを読んでいるときに、基本的に aと aを取り、そのような char が文字列の head と等しいか、そうでない場合に返す次の関数を見つけました。CharStringJust (char,tail)Nothing

パターンが失敗したときに評価されるブロックにあるlet (c':s') = sため、例外は生成されないと説明されていますが、そうではありません。doNothing

だから私はそれを次のように書き直さなければなりませんでした:

期待どおりに機能しました...なぜそれが私に起こっているのですか?