monads

    8

    1答えて

    無料のモナドを他のモナドに変換できますが、タイプがFree f xの場合、生成されたASTのすべてのノードを別のモナドの他のノードにマップしないでツリー全体を印刷します。 ガブリエル・ゴンザレスuses値我々は(ファンクタとしてChoice x = Choice x xを使用して)のような多型の機能を持っている場合は呼び出すことは容易である showF :: (x -> b) -> ((Free

    7

    2答えて

    私はhaskell-cafeでこれを尋ねましたが、ここでも聞いてみるかもしれません。 Backwards mのMonadインスタンスは有効ですか? {-# Language RecursiveDo #-} import Control.Applicative.Backwards import Control.Monad.Fix instance MonadFix m => Monad (

    30

    1答えて

    わかりましたので、fがComonadあるとき、Dual fはモナド(楽しい運動)である、のは、結局のところ、あなたがタイプ newtype Dual f a = Dual {dual :: forall r. f(a -> r)->r} を持っているとしましょう。それは別の方法で動作しますか? fmap ab (Dual da) = Dual $ \fb -> da $ fmap (. ab)

    9

    1答えて

    ほとんどのモナド関数は純粋な引数をとり、モナドの値を返します。それらのそれぞれが異なる問題を持ち出すようだ mplus :: (MonadPlus m) => m a -> m a -> m a finally :: IO a -> IO b -> IO a forkIO :: m() -> m ThreadId -- | From Control.Monad.Parallel fo

    6

    3答えて

    ハスケルでは、モナドは関数returnとbindの形で定義されています。戻り値の型はa -> m a、バインドの型はm a -> (a -> m b) -> m bです。その前に指摘されているのはmonads can also be defined in terms of return and joinです。ここで、joinはタイプm (m a) -> m aの関数です。バインドは結合の観点から定

    9

    4答えて

    これはJava 8でのオプションの有効な使用方法ですか? class Foo { private final Integer id; private final String name; private final String countryCode; Foo(final Integer id, final String name, final

    5

    2答えて

    一つの方法は、それがオブジェクトCからCにendofunctorsている(一部のカテゴリCの)endofunctorsのカテゴリに初期モノイドであると言うことです、矢印がありますそれらの間の自然な変換。私たちはHaskするCを取る場合は、endofunctorは*がinitialityことでHask 、End(Hask)誘導におけるモノイドmへendofunctor tから任意のマップのオブジェク

    6

    1答えて

    のは、私はこの(間違いなく誤解を)持っているとしましょう転がっコードの一部: import System.Environment (getArgs) import Control.Monad.Except parseArgs :: ExceptT String IO User parseArgs = do args <- lift getArgs case s

    19

    4答えて

    私は、入力として値をとり、その入力の関数を呼び出し、その結果がJust xなら、それはxを返さなければなりません。それ以外の場合は、元の入力を戻す必要があります。言い換えれば 、この機能(私がコールするのか分からなかったこと):それはまだ、定義されていない場合 foo :: (a -> Maybe a) -> a -> a foo f x = fromMaybe x (f x) それは、汎用

    11

    3答えて

    モナドはFunctor typeclassからfmapを得る。コモノドがCofunctorクラスで定義されたcofmapメソッドを必要としないのはなぜですか?次のように class Functor f where fmap :: (a -> b) -> (f a -> f b) Cofunctorを定義することができます: class Cofunctor f where c