applicative

    3热度

    1回答

    我目前正在为我的谨慎数学课程开发一个个人项目,并试图在Haskell中形式化集合论。我们课堂中定义的一个集合是特定宇宙元素的任意嵌套。我选择了代表这是事实上的标准嵌套列表: data Set a where Empty :: Set a Elem :: a -> Set a -> Set a Set :: Set a -> Set a -> Set a 作为一个懒

    0热度

    1回答

    我一直在考虑下面的一段代码,我想围绕我的头: data MyExample e i = MyExample (CustomMonad e i) | forall b. MyExample e b :>>= (b -> CustomMonad e b) | forall b. (MyExample e (b -> a)) :<*> (MyExample e b) | f

    1热度

    1回答

    下面是我的方法签名和定义阶 def accumulate[T[_]: Traversable, O: Monoid, A]: (A => O) => T[A] => O = fao => ta => (implicitly[Traversable[T]].traverse[({type f[X] = Acc[O, X]})#f, A, O](ta)(a => Acc(fao(

    4热度

    1回答

    我有一个关于重构Parsec代码使用Applicative接口的问题。假设我有使用单子接口这样的解析器: filePath0 :: GenParser Char st Info filePath0 = do optional (string "./") r <- artist slash l <- album slash t <- tr

    4热度

    2回答

    我有这种类型的工作,基本上是Kleisli箭头: {-# language DeriveFunctor #-} data Plan m i o = Plan (i -> m o) deriving Functor instance (Monad m) => Applicative (Plan m i) where pure x = Plan (\_ -> pure x)

    3热度

    1回答

    我对coq很新颖,迄今为止我设法证明了我也可以通过手工证明的东西。所以当我遇到Selection monad并决定在haskell中实现它时,我认为这将是一个很好的练习,但我被卡住了。有人能提供一个coq证明的例子,说明选择monad是应用程序和monad吗?这是一个函数的haskell实现。 newtype Sel r a = Sel { runSel :: (a -> r) -> a }

    1热度

    1回答

    我想这个Applicative validation syntax例如转换成Scalaz 7 +无形2.0 //for jupyter-scala kernel //classpath.add("org.scalaz" %% "scalaz-core" % "7.2.7") //classpath.add("com.chuusai" %% "shapeless" % "2.3.2") ca

    1热度

    1回答

    在GHCi中,当我键入pure 2时,它返回2;或pure "aa"返回"aa"。我想知道这个应用实例是如何由GHCi解决2或“aa”的。

    3热度

    2回答

    从validation包的文档: 的AccValidation数据类型是同构的Either,但是具有在误差累积侧的Applicative一个实例。也就是说,如果遇到两个(或更多)错误,则会使用Semigroup操作附加它们。 作为这个Applicative实例的结果,没有相应的Bind或Monad实例。 AccValidation就是一个例子,“一个不是单子的应用函子”。 这并不明显,为什么这是一

    3热度

    1回答

    AFAIK新增加的GHC8之一是ApplicativeDo语言的扩展,这desugars的DO-符号到相应Applicative方法(<$>,<*>)如果可能的话。我有以下问题。 它是如何决定是否可以解除Applicative方法?据我所知,它会进行依赖性检查(如果后者取决于前者的结果)来决定资格。还有其他标准吗? 虽然这种添加使得应用代码更易于阅读没有任何Monad实例(可能?)的类。但是对于既