问题标签 [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.
haskell - Haskell Applicative 和 ErrorT?
为什么我可以执行以下操作:
但我不能这样做:
以及如何修改 f2 以使其按预期工作?
python - Scala 中是否有与 Python 更通用的 map 函数等价的功能?
我知道 Scala 的 Lists 有一个带有签名的map实现(f: (A) => B):List[B]
和一个带有签名的foreach实现,(f: (A) => Unit):Unit
但我正在寻找接受多个 iterables 的东西,就像 Python map接受多个 iterables 一样。
我正在寻找带有(f: (A,B) => C, Iterable[A], Iterable[B] ):Iterable[C]
或等效签名的东西。有没有这样的图书馆或类似的类似方式?
编辑:
如下所示,我可以做
但这会在步骤之间创建一个临时列表。如果评论者会发帖,我可以给他投票(提示,提示),但还有其他方法吗?
haskell - Control.Applicative 中“纯”函数的命名
为什么将值提升到以pure
Control.Applicative 命名的仿函数的函数?
haskell - Haskell 中状态的 Functor / Applicative 实例
在阅读(并浏览了一些部分)Wadler 关于 monad 的论文之后,我决定更仔细地阅读这篇论文,为他描述的每个 monad 定义函子和应用实例。使用类型同义词
Wadler 用于定义状态 monad,我有以下内容(使用相关名称,以便稍后使用 newtype 声明定义它们)。
当我切换到在 newtype 声明中使用类型构造函数时,例如,
一切都崩溃了。一切都只是轻微的修改,例如,
然而,由于 lambda 表达式隐藏在该类型构造函数中,因此在 GHC 中没有任何运行。现在我看到的唯一解决方案是定义一个函数:
为了将 s 绑定到 'st' 并实际返回一个值,例如,
还有另一种不使用这些辅助功能的方法吗?
haskell - 如何抽象一个常见的 Haskell 递归应用函子模式
在 Haskell 中使用 applicative functors 时,我经常遇到这样的重复代码:
在这个例子中,我想说:
但我不知道如何制作applyMany
(或类似的东西)。我什至无法弄清楚类型是什么,但它需要一个数据构造函数、一个 Int (n)和一个应用n次的函数。在为 QuickCheck、SmallCheck、Data.Binary、Xml 序列化和其他递归情况创建实例时会发生这种情况。
那么我该如何定义applyMany
呢?
list - 证明流的平等
我有一个数据类型
玫瑰树和应用实例
并且需要证明它的应用规律。然而,纯创建无限深、无限分支的树。因此,例如,在证明同态定律时
我以为证明平等
通过近似(或采取)引理会起作用。然而,我的尝试在归纳步骤中导致了“恶性循环”。特别是,减少
给
其中approx是近似函数。如果没有明确的共归纳证明,我如何证明相等?
haskell - 应用风格的计算成本
我在我的网络应用程序中使用了一个小型数据库池。而这个特殊的功能:
可以用应用风格重写:
可以说它同样具有可读性并且更加优雅。所以很自然,我想这样写。但是数据库连接池应该很快,恐怕这种风格会引入不必要的开销。
所以我的问题是,在 Haskell 中使用应用函子会产生多少开销(如果有的话)?有没有基准?
haskell - ap 如何以及为什么在 Haskell 中被定义为 liftM2 id
在试图更好地理解 Applicative 的同时,我查看了 <*> 的定义,它往往被定义为 ap,而它又被定义为:
查看 liftM2 和 id 的类型签名,即:
我不明白如何仅通过传入 id,类型签名的相关部分似乎从 转换(a1 -> a2 -> r) -> m a1
为m (a -> b)
。我在这里想念什么?
haskell - 应用(和朋友)方法是否有人性化的名称?
我最近一直在使用应用程序(和替代),而让我感到沮丧的一件事是我对命名法缺乏了解。作为一个例子,我想能够说function name
而不是star thing
for <*>
。>>=
因此,以与read大致相同的方式,以下内容bind
是否有更人性化的名称:
<*>
- 申请?<*
&*>
- 左右适用?<$>
- 地图?<|>
同样从箭头
***
- 分裂?&&&
- 扇出?
如果有这些名称,我的搜索还没有发现它们。我知道这些条款可能不被接受,但如果有的话,我很想知道它们。
haskell - Haskell:一些和很多
some
有什么many
用Control.Applicative.Alternative
?如果我写类似的东西some $ Just 42
,它似乎会导致无限递归,这似乎不是很有用......