applicative

    0热度

    1回答

    我正在通过this paper阅读,它说,猿人是幻影应用仿函数。 我试着在purescript中设置一个幻像类型,但我在Functor实例中得到一个类型错误。我的猜测是编译器不知道a在Accy o a之后做了什么映射。我将如何解决这个问题? newtype Accy o a = Accy { acc :: o } instance mapaccy :: (Monoid o) => Functo

    10热度

    1回答

    我明白(->) a是一种* -> *高阶类型,当应用于类型参数b给a -> b 我可以写一个类型的一种* -> *,当应用于c会给a -> b -> c类型? 如果不是,为什么不呢?也许使用一些语言扩展和forall? 这将让我写函子与应用型(和其它类),其中函子结构是“a -> b ->”的实例如下所示: (<*>) :: Applicative t => t (c -> d) -> t c -

    11热度

    1回答

    我试图写一个分析器使用parserspackage使用do语法。这里是一个例子: {-# LANGUAGE ApplicativeDo #-} import Text.Parser.Char (string, spaces) import Text.Parser.Token (TokenParsing, natural) issueParser :: TokenParsing p => p

    1热度

    1回答

    作为练习,我想快速检查应用型的同态属性: 纯˚F< *>纯X =纯(FX) 当我尝试写的财产一般使用幻像类型的方式,我似乎遇到了无穷的'无法推断'错误。在这一点上,我已经添加了许多类型的注释到我的代码中,但仍然遇到了这些错误。 我的代码是: {-# LANGUAGE ViewPatterns #-} import Test.QuickCheck (quickCheck) import Tes

    3热度

    1回答

    (<*>) :: Applicative f => f (a -> b) -> f a -> f b Const :: a -> Const a b Monoid m => Applicative (Const * m) Const "a" <*> Const "b" -- yields Const "ab" Const a <*> Const a = Const a <> Const

    1热度

    2回答

    如果我有一个功能(例如类型a -> b的)包裹在一个Applicative和可施加到其上的值(即在上述示例中a类型的值),I可以如下应用它: doSomething :: Applicative f => f (a -> b) -> a -> f b doSomething wrappedFn arg = wrappedFn <*> (pure arg) 我发现自己做了很多。是否有标准的预定

    2热度

    2回答

    我刚刚意识到,函数具有Monad,Functor和Applicative的实例。 我最常做的,当我看到一些类型类实例我不明白,是写一些良好的输入表达式,看看它返回: 有人可以解释这些情况?你通常会听到关于List和Maybe的实例,这些实例现在对我来说很自然,但我不明白函数如何成为函子或Monad。 编辑: 好吧,这是一个有效的良好的输入表达式无法编译: fmap (+) (+) 1 (+1) 1

    1热度

    1回答

    内部的ExceptT String IO() 我有一个产生ReaderT像这样一个功能的DO块: type UDCEnv = (AWS.Env, Bool) uploadVersionFilesToCaches :: S3.BucketName -> FilePath -> [GitRepoNameAndVersion]

    3热度

    1回答

    我有以下代码: {-# LANGUAGE DeriveFunctor #-} data Foo a = Foo { field1 :: a, field2 :: a} deriving (Functor) instance Applicative Foo where pure a = Foo a a f <*> a = Foo (r field1) (r field2)

    2热度

    2回答

    的确如此: λ :i Applicative class Functor f => Applicative (f :: * -> *) where 同时: fmap f x = pure f <*> x - 由Applicative规律,我们可以从pure & <*>定义fmap。 我不明白为什么我要我要一个Applicative如果,真的,fmap可以自动在pure和<*>规定设立每次