问题标签 [applicative]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
864 浏览

haskell - 有人能解释一下这段代码中出现 Applicative 实例的位置吗?

我可以看到它有效,但我不明白Applicative(or Functor) 的实例来自哪里。

0 投票
2 回答
1829 浏览

haskell - 如何证明 monad 是函子和应用函子?

众所周知,Monad 在理论上是函子的子集,特别是应用函子,尽管 Haskell 的类型系统中没有指出。

知道这一点,给定一个 monad 并基于returnand bind,如何:

  • 导出fmap,
  • 导出<*>?
0 投票
2 回答
3036 浏览

scala - 组合2个列表的元素

假设我们有两个列表:

我想要的是:List("a1", "b2", "c3")也就是说,将 l1 的第 n 个元素与 l2 的第 n 个元素相加

实现它的一种方法是:

我只是想知道是否可以通过 Applicative 实现它。我试过了 :

但它提供了所有组合:

任何想法?

谢谢

贝努瓦

0 投票
2 回答
1397 浏览

validation - 如何使用 scalaz 将函数组合到应用程序

在学习Scalaz 6时,我正在尝试编写返回验证的类型安全阅读器。这是我的新类型:

我有两个函数为整数和字符串(*)创建地图阅读器:

给定以下地图:

我可以写两个读者来检索姓名和年龄:

一切正常,但现在我想组合两个读者来构建一个Boy实例:

我最好的看法是:

它按预期工作,但是对于两个级别的应用程序构建器来说,表达方式很尴尬。有没有办法让以下语法起作用?

(*) 完整且可运行的实现:https ://gist.github.com/1891147


更新:这是我在尝试上述行或 Daniel 建议时收到的编译器错误消息:

0 投票
3 回答
1260 浏览

scala - 解释 scalaz-7 中的 Traverse[List] 实现

我试图了解scalaz-7traverseImpl中的实现:

有人可以解释如何与List交互Applicative吗?最终,我希望能够为Traverse.

0 投票
2 回答
749 浏览

haskell - 为什么导入 Control.Applicative 允许此错误代码进行类型检查?

我正在帮助一个朋友学习 Haskell,他最近创建了这样的代码,该代码在运行时检查并产生 CPU 燃烧循环。我对此完全感到困惑。

那不应该类型检查,但确实如此。正确的版本显然是:

令我感到奇怪和惊讶的是,无论是否导入 Control.Applicative,您都会得到不同的结果。如果不导入它,它不会输入检查:

我在 Control.Applicative 的源代码中没有看到 Monad 实例((->) String,所以我猜测由于使用 Control.Category 或 Control.Arrow 会发生一些奇怪的事情,但我不知道。所以我想我有两个问题:

  1. 导入 Control.Applicative 的原因是什么?
  2. 当它进入无限循环时会发生什么?在这种情况下,Haskell 实际上试图执行什么?

谢谢,

0 投票
2 回答
1474 浏览

haskell - 如何在haskell中映射元组的第一个元素

我正在尝试编写一个类似的函数

在这里,我正在尝试基于元组的第一个元素构建一个列表,但我不确定如何继续。我可以为非元组执行此操作,但不确定如何fst在此构造中使用(如果我应该首先使用该函数)。

此函数将与另一个相同类型的函数交互,但处理输入的方式略有不同。我需要使用 fmap 和 ap 因为元组在Maybe容器内

0 投票
1 回答
6867 浏览

haskell - 类型类 MonadPlus、Alternative 和 Monoid 之间的区别?

标准库 Haskell 类型类MonadPlusAlternativeMonoid每个都提供了两个具有基本相同语义的方法:

  • 空值:mzeroemptymempty
  • a -> a -> a将类型类中的值连接在一起的运算符: mplus<|>mappend

这三个都指定了实例应遵守的这些法律:

因此,似乎这三个类型类都提供了相同的方法。

Alternative也提供someand many,但它们的默认定义通常就足够了,因此就这个问题而言,它们并不太重要。)

所以,我的疑问是:为什么有这三个极其相似的类?除了它们不同的超类约束之外,它们之间是否有任何真正的区别?

0 投票
4 回答
2158 浏览

haskell - 在哪里可以找到应用函子的编程练习?

我一直在阅读有关应用函子的文章,尤其是在 McBride 和 Paterson 的 Functional Pearl 中。但是我想通过做一些练习来巩固我的理解。我更喜欢编程练习,但证明练习也可以。 哪些练习可以帮助我学习使用应用函子进行有效编程?

个人练习和其他地方列出的练习的指针一样都可以。

0 投票
1 回答
893 浏览

scala - 内部具有幺半群和函数的元组的应用实例

我试图将之前遇到的 haskell 示例转换为 scalaz。原来的例子是这样的:

据我所知,它使用了这个实例。

它不会从字面上转换为 scalaz:

虽然,我已经寻找了一个实例,它似乎在那里(再次,据我所知)。

所以,问题是:为什么它不能这样工作?或者我错过了什么/没有得到正确的?