問題タブ [state-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.
haskell - Haskell:マップrunST
タイプのバインディングがあり、次のようにマップを使用して各要素[ST s (Int, [Int])]
に適用しようとしています。runST
これは私にエラーメッセージを与えます
私が誤解していることがあるに違いありません。runSTと関数の合成については知っていますが、これが当てはまるかどうかはわかりません。
みなさん、ありがとうございました!
haskell - haskell - 状態モナド関数を取得しますか?
State Monad の get 関数による 1 つの質問:
私が走れば
runState 取得 1
結果が出ました
(1,1)
get 関数は結果の値を状態に設定し、この場合は状態が 1 であるため、これは問題ありません。したがって、(1,1) が結果です。Ok。
しかし、私が実行すると
runState (do{(a,b) <- get; return a}) (偽、0)
結果が出ました
(偽,(偽,0))
そして、これは私には理解できません。
get 関数は結果値を状態に設定し、状態を変更しませんでした。だから私が期待するのはこのようなものです
((偽,0),(偽,0))
これも同じ
runState (do{(a,b) <- get; return b}) (False, 0)
結果は
(0,(偽,0))
上記のように、これもわかりません。
ですから、この奇妙な結果について説明していただければ幸いです。;)
前もって感謝します
よろしくお願いします、
ジミー
haskell - Gtk2Hsでアプリケーションの状態を処理する方法
Gtk2Hを使用してアプリケーションを作成する方法を学ぼうとすると、イベント駆動型Gtk2HSとモデルの永続的な状態との間のギャップを埋めるのが困難になります。簡単にするために、私はこの単純なアプリケーションを持っているとしましょう
私のアプリケーションの状態は、ボタンが押された回数です。このような他の投稿を見ると、MVarまたはIORefに依存していますが、これは私には満足のいくものではないようです。将来、コードをリファクタリングして、状態が独自のコンテキストで動作するようにするためです。
ソリューションでは、次のようなステップ関数を使用してStateモナドを使用する必要があると思います。
しかし、その意味、上記のコードでそれを行う方法、またはそのモナドが私の問題の正しい解決策であるかどうかについてはわかりません。
scala - マップとキャリー状態の両方に対する適切なモナドまたはシーケンスの理解とは何ですか?
私はプログラミング言語のインタプリタを書いています。
一連の式を評価して一連の値を取得し、評価が行われるときに 1 つの評価器から次の評価器に状態を伝達するための正しいコード イディオムが必要です。これには関数型プログラミングのイディオムが必要です。
結果は地図のように出てくるので折り目ではないです。state prop across のため、これはマップではありません。
私が持っているのは、これを理解しようとするために使用しているこのコードです。最初に数行のテスト リグで我慢します。
私の現在の解決策。マップの本体が評価されると更新される var を使用します。
私は、私が「折りたたむときにそれを袋に入れる」イディオムと呼ぶことを行うfoldLeftを使用して、容認できない解決策と考えるものを持っています:
また、再帰的なバリエーションもいくつかあります (明らかですが、明確ではなく、動機もよくありません)。ストリームを使用するものは、ほとんど許容できます。
しかし、上記の元の 'var' ソリューションほどコンパクトで明確なものを理解することはできません。 . これを使う... (願わくば!)
haskell - Getmonadからビットを読み取るモナドの方法
Getmonadからある程度のビットを読み取る必要があります。今私のコードは次のようになります
これをある種の状態モナドにラップして、次のようなコードを作成したいと思います。
どのような機能を実装する必要がありますか?それらはどのように実装する必要がありますか?
GetとBitGetのソースコードを調べましたが、何が起こっているのか完全には理解していません。
haskell - Data.Sequenceを一元的に反復します
繰り返す必要のあるData.Sequenceがあります。問題は、そのステートフルであり、シーケンスは上記の反復の結果として大きくなる可能性があります。
だから私は明示的な再帰でこれをやっていますが、それは不格好なようです。さらに、それは一般的なことのようです。ひどく、私はどのような一般的なモナディック制御構造を再発明しましたか?
haskell - HaskellのStateMonadからのID
重複の可能性:
Haskellで一意のラベルを作成する
データ型Personと、Personを作成するための入力データがあります。
各Personに独自のID(整数[0 ..]としましょう)を持たせたいのですが。これは再帰で行うことができますが、Haskellでこれを行っているので、モナドを理解したいと思います。州のモナドはおそらくこの仕事に最適だと思いますか?
問題は、私は多くのことを本当に理解していないということです:私がモナドの中にいるとき(どの関数が内部を使用できるか)、どのようにそれらを一緒に配管するか、どのように「ダニ」関数を前進させるかなど。 。
だから私は現在これに固執しています:tick関数はおそらく機能しますが、それを使用する方法がわかりません。そして、人の構築のためにその価値を連続的に得る方法。
編集:これはData.UniqueまたはData.Unique.Idを使用するとどういうわけか簡単になりますか?私の状況ではどのように使用されますか?
haskell - 状態モナドで値を返す
私は一般的にMonadsとHaskellに不慣れであり、それらを使用するときに値を返す方法を理解しようとしています。私のコードは次のようになります。
を使ってみsnd (snd b)
ましたが、どうやらState MyState B
タプルではないのですか?どうすれば希望の値を返すことができます(B "b")
か?
編集:ダニエルのアドバイスを考慮に入れると、書き直しは次のようになります。
それでもコンパイルエラーが発生します。
編集2:修正済み!最終バージョンは次のようになります。