問題タブ [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.
maybe - PureScript の do 表記から Maybe 値を返すにはどうすればよいですか?
do 表記を使用する関数から Maybe 値を返そうとしていますが、うまく動作しないようです。この関数は、文字列 (「ファイル名」) と検索するパスを受け取ります...
どこ...
しかし、「Count not match Type Array with type Maybe」というエラーが表示され続けるため、コンパイラは do 表記が配列を返すことを期待しているようです。多分値を返すにはどうすればよいですか?
haskell - カスタム データ型とパラメーターの比較
私は Haskell を学んでおり、このプログラムを実装しようとしています。カスタムデータ型があります
getInput
次に、このタイプの値を返すメソッドがあります。
今、このタイプの値をディスパッチする方法が混乱しています。方法があります
入力がNumber x
私も使用しようとしcase
ました:
のインスタンスも作成しようとしましEq
た
case
カスタム データ型をパラメーターと比較したり、ブランチに複数のステートメントを含めるにはどうすればよいですか?
haskell - f 単独の代わりに (_ <- f) を使用しますか?
この ZeroMQ HelloWorldClient.hsコード スニペットを見ると、次のようになります。
_ <- receive requester
と書かない理由はありますreceive requester
か?
また、一般的に、代わりに_ <- f
(where ) を使用する理由はありますか?f : Monad m => m a
f
haskell - State モナドを使った典型的な関数で、 put コマンドは何をしますか?
これはhttps://wiki.haskell.org/All_About_MonadsState
の例です。モナドを
使用StdGen
して一連の乱数生成コマンドに値を通す例です。return
最後のものが正しく機能することを理解していれば、値として新しいモナドを作成するだけです。x
しかし、put g'
実際には何をするのでしょうか? g'
実際に失われないのはなぜですか?
haskell - Haskell パーサー コンビネータ - do 記法
パーサー・コンビネーター・ライブラリーの構築に関するチュートリアルを読んでいて、よくわからない方法に出くわしました。
これは、オペレーターbind
の実装です。関数(>>=)
の仕組みがよくわかりません。chainl1
私が見ることができるものf
からop
、抽出してから適用してf a b
再帰しますが、タプルのリストを返す必要があるときにパーサーから関数を抽出する方法がわかりませんか?
haskell - モナド脱糖ハスケル
実世界の Haskell でのモナドに関する章を読む。do 表記の脱糖に出くわしました。特にpattern <- action
.
上記の例は、次のように脱糖されます。
let 句に 2 つのパターン マッチング ケースを含める方法を理解するのに苦労していますか?
同じ let 句にf pattern
andを含める方法がわかりません。f _
let 節に複数のパターン マッチを含めることができるかどうかを調べてみましたが、私が見た限りでは、ほとんどの人が case ステートメントを使用しています。
ここで実際に何が起こっているのかを理解するのに助けが欲しいですか?
haskell - Haskell - 奇妙な do ブロック動作
MonadPlusに関するHaskell Wikibookを読んでいるときに、基本的に aと aを取り、そのような char が文字列の head と等しいか、そうでない場合に返す次の関数を見つけました。Char
String
Just (char,tail)
Nothing
パターンが失敗したときに評価されるブロックにあるlet (c':s') = s
ため、例外は生成されないと説明されていますが、そうではありません。do
Nothing
だから私はそれを次のように書き直さなければなりませんでした:
期待どおりに機能しました...なぜそれが私に起こっているのですか?