Questions tagged «applicative»

5
不是函子/函数/应用/单子的好例子?
在向某人解释什么是类型类X时,我努力地找到了恰好是X的数据结构的良好示例。 因此,我要求提供以下示例: 不是Functor的类型构造函数。 类型构造函数,是Functor,但不是Applicative。 类型构造器,它是一个Applicative,但不是Monad。 类型构造器,它是Monad。 我认为到处都有很多Monad的例子,但是与以前的例子有一些联系的Monad很好的例子可以使情况更完整。 我正在寻找彼此相似的示例,仅在对于属于特定类型类的重要方面有所不同。 如果能够在这个层次结构中的某个地方(在Applicative和Monad之间找到一个)Arrow的示例,那也很棒!


1
MonadPlus,Alternative和Monoid类型类之间的区别?
标准库的Haskell类型类MonadPlus,Alternative以及Monoid各自提供两种方法具有基本相同的语义: 空值:mzero,empty或mempty。 操作a -> a -> a:在该类型类联接值加在一起mplus,<|>或mappend。 这三个规则均指定了实例应遵循的以下法律: mempty `mappend` x = x x `mappend` mempty = x 因此,似乎三个类型类都提供相同的方法。 (Alternative也提供some和many,但是它们的默认定义通常就足够了,因此,在这个问题上它们并不是太重要。) 所以,我的查询是:为什么这三个类非常相似?除了它们不同的超类约束之外,它们之间是否还有真正的区别?

2
什么时候以及为什么应该在Scala中使用应用函子
我知道Monad可以在Scala中表示如下: trait Monad[F[_]] { def flatMap[A, B](f: A => F[B]): F[A] => F[B] } 我明白了为什么有用。例如,给定两个功能: getUserById(userId: Int): Option[User] = ... getPhone(user: User): Option[Phone] = ... 我很容易编写函数,getPhoneByUserId(userId: Int)因为Option它是monad: def getPhoneByUserId(userId: Int): Option[Phone] = getUserById(userId).flatMap(user => getPhone(user)) ... 现在我Applicative Functor在Scala中看到了: trait Applicative[F[_]] { def apply[A, B](f: F[A => B]): F[A] => F[B] …

11
应用风格的实际用途是什么?
我是Scala程序员,现在正在学习Haskell。很容易找到面向对象概念的实际用例和现实示例,例如装饰器,策略模式等。书和互连网充满了它。 我意识到功能性概念并非如此。恰当的例子:应用剂。 我正在努力为应用程序找到实际的用例。几乎所有的教程和书籍的我所遇到到目前为止提供的示例[]和Maybe。我希望应用程序能够比FP更加适用,因为他们在FP社区中得到了所有关注。 我认为我理解了应用程序的概念基础(也许我错了),并且我一直在等待启蒙的时刻。但这似乎没有发生。从来没有在编程时,我有一阵子会高兴地喊着:“尤里卡!我可以在这里使用应用程序!” (同样,for[]和除外Maybe)。 有人可以指导我如何在日常编程中使用应用程序吗?如何开始发现图案?谢谢!

4
Haskell的<|>运算符做什么?
对于我而言,仔细阅读Haskell的文档总是很痛苦,因为您所获得的有关某个功能的所有信息通常仅不过是:f a -&gt; f [a]这可能意味着很多事情。 与&lt;|&gt;功能一样。 我所得到的就是:(&lt;|&gt;) :: f a -&gt; f a -&gt; f a这是“关联二进制操作” ... 通过检查,Control.Applicative我了解到它确实与实现无关,取决于实现。 instance Alternative Maybe where empty = Nothing Nothing &lt;|&gt; r = r l &lt;|&gt; _ = l 好的,所以如果没有左,它就返回右,否则它就返回左,陷阱。。这使我相信它是一个“左或右”运算符,考虑到它的使用|和|作为“或”的历史用法,这有点有意义” instance Alternative [] where empty = [] (&lt;|&gt;) = (++) 除了这里,它只是调用list的串联运算符...分解我的想法... 那么那个功能到底是什么呢?有什么用?它在宏伟的计划中适合什么地方?

2
对纯净性的需求
我正在学习Haskell的Applicatives。在我看来(我可能错了),pure实际上并不需要该功能,例如: pure (+) &lt;*&gt; [1,2,3] &lt;*&gt; [3,4,5] 可以写成 (+) &lt;$&gt; [1,2,3] &lt;*&gt; [3,4,5] 有人可以解释该pure函数提供的显式映射所带来的好处fmap吗?

3
所有固定大小的容器是否都具有很强的单曲面函子,反之亦然?
该Applicative类型类代表松懈monoidal函子是保留对输入功能类别的笛卡尔monoidal结构。 换句话说,给定的规范同构见证(,)形成一个单面结构: -- Implementations left to the motivated reader assoc_fwd :: ((a, b), c) -&gt; (a, (b, c)) assoc_bwd :: (a, (b, c)) -&gt; ((a, b), c) lunit_fwd :: ((), a) -&gt; a lunit_bwd :: a -&gt; ((), a) runit_fwd :: (a, ()) -&gt; a runit_bwd :: a -&gt; (a, …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.