monads

    3

    1答えて

    モナドを使用してアプリケーションとファンクタを使用するときにコードが似ているので、>>=の代わりに=<<を使用しています。私も*>/>>の代わりに<*を使っています。しかし、私は、<*が*>でないことに気付きました。何が=<<にありますか?>>=です。例えば : print 5 <* print 6 は私を与える:私は呼ばれて print 6で、周りに他の方法を印刷するためにそれらを期待してい

    0

    1答えて

    のは、考えてみましょう: f :: Int f = return 64 >>= (\x -> x^2) >>= (\y -> y^2) GHCiのは、(四乗に結果を上げることによって、その後の二乗64)281,474,976,710,656に少なくとも関連 Couldn't match expected type `Int' with actual type `m0 b0' In

    1

    2答えて

    sequence :: (Monad m) => [m a] -> m [a] sequence [] = return [] sequence (x:xs) = x >>= \v -> sequence xs >>= \vs -> return (v:vs) 私が質問のカップルを持っている: mはMonadです。しかし、リストに「異なる種類」のモナドが含まれている場合、つまりタイプMo

    3

    2答えて

    ジェネレータには確率分布を表すモナドであるジェネレータにジェネレータコンビネータ(ScalaCheckやHaskellのQuickCheckに類似したバージョン)を実装する予定です微風ライブラリー)。それはモナドなので、RandはmapとflatMapを実装します。よくあることですが、Genをモナドとして実装したいと考えています。以下に示すように、Genのマップの実装は簡単です: // Rand

    2

    2答えて

    モナドについて知りましたが、私は多くの関数をControl.Monadに実装しようとしていました。私はちょうどapに行ったが、私はそれを働かせることはできない。私は関数almostAp :: Monad m => m (a -> b) -> m a -> m (m b)を作って、私が作った別の関数flatten :: Monad m => m (m b) -> m bでそれを作ろうとしました。私は

    5

    2答えて

    F#で興味深い関数を書いています(HaskellのスクラップYour Boilerplateで利用可能なあらゆる関数と同じように)。残念ながら、かなり小さなデータ構造でさえ、スタックオーバーフローを素早く引き起こします。私はどのように私は尾の再帰的なバージョン、継続的なスタイルのバージョンを渡すか、または同等のアルゴリズムに変換することができますかと思っていた。私はF#がモナドをサポートしていると

    1

    1答えて

    私はいくつかのコードを残していますが、残念なことに、プログラム内の状態を追跡するための参照の幅広い使用があります。オイラー法を経て、多くの値を更新し一つのモジュールにおけるそれらの特に悪質な利用があります: eulerUpdate states timestep = do _val1 <- readReference (val1 states) _dval1 <- readRe

    0

    1答えて

    私はinorderでナンバリングツリーを書いています。ご覧のとおり、putを使用しました。ここでwithStateを使用できますか? renumberTree2Inorder :: Tree a -> StateT Int Identity (Tree Int) renumberTree2Inorder Empty = return Empty renumberTree2Inorder (No

    1

    1答えて

    私は、私が従うコースのためにハスケルで非常に小さな試合をしなければなりません。だから私は演奏機能を作りましたが、今はタイプシグネチャを変更するのに問題があります。 play :: [[String]] -> StateT GameState IO Score play input = do liftIO $ clearScreen (answered, correct) <

    0

    2答えて

    私のコードを見てください。 GHCiのは (ApplicativeのM)なしインスタンス は「モナドM」 のインスタンス宣言でインスタンス宣言 のスーパークラスに起因すると言われ、私はこのエラーを理解していない、と私はしないでくださいそれを修正する方法を知っている。私たちを手伝ってくれますか ? newtype M a = StOut (Stack -> (a, Stack, String))