相关疑难解决方法(0)

Monoidal Functor是适用的,但是Applicative定义中的Monoid类型类是什么?

适用于Monoidal Functor:

mappend :: f         -> f   -> f
$       ::  (a -> b) ->   a ->   b
<*>     :: f(a -> b) -> f a -> f b
Run Code Online (Sandbox Code Playgroud)

但是我没有在应用类型类的定义中看到有关Monoid的任何参考,你能告诉我为什么吗?

定义:

class Functor f => Applicative (f :: * -> *) where
  pure :: a -> f a
  (<*>) :: f (a -> b) -> f a -> f b
  GHC.Base.liftA2 :: (a -> b -> c) -> f a -> f b -> f c
  (*>) :: f a …
Run Code Online (Sandbox Code Playgroud)

haskell applicative

12
推荐指数
3
解决办法
855
查看次数

(&lt;*&gt;)中的*是否具有特殊含义?

试图扩大我对Haskell中符号的理解:

  • ($) :函数应用程序运算符(允许您在函数上应用参数)
  • (&) :功能应用程序运算符的翻转版本? (&) = flip ($)
  • (<>) :关联运算符(您可以在半群和Monoid中找到它)
  • (<$>):将功能应用程序($)移到函子结构上
  • (<&>) :翻转的函子图

我们可以在(*)和之间建立链接(<*>)吗?

我不明白的意思*实际上是...

haskell naming-conventions operators category-theory applicative

11
推荐指数
1
解决办法
195
查看次数

为什么`mappend`中缀别名`<>`而不是`+`?

在Haskell中,为什么mappend(来自类Monoid)的中缀别名<>而不是+?代数课程+通常用于幺半群的二元算子.

haskell

5
推荐指数
2
解决办法
849
查看次数