问题标签 [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 投票
5 回答
340 浏览

haskell - 将两个一元值成对并返回

我正在玩 Parsec,我想将两个解析器组合成一个,并将结果放在一对中,然后将另一个函数提供给它以对解析结果进行操作以编写如下内容:

所以我写了这个:

有没有类似于 (<&>) 的东西已经在某处实现了?或者这可以写成无意义的吗?我试过fmap (,)了,但似乎很难匹配类型。

0 投票
1 回答
468 浏览

haskell - 如何混合应用函子和箭头

我在 Andrew Birkett 的博客Applicative arrows for XML &&& return to pure上读到,我们可以混合使用箭头和应用函子。

我自己尝试过,但我没有我所期望的。我想要这个结果:

但我得到了这个:

我认为我的代码中有一个转折,但我不知道在哪里搜索。

如果有人可以提出一些帮助,下面是我的代码。

0 投票
5 回答
12055 浏览

haskell - 与单子解析相比,应用解析有什么好处?

似乎有一个共识,您应该将 Parsec 用作应用程序而不是 monad。与单子解析相比,应用解析有什么好处?

  • 风格
  • 表现
  • 抽象

monadic 解析出来了吗?

0 投票
1 回答
348 浏览

haskell - 应用的一元等价<*

在阅读了Anthony与样式相关的解析器问题的回复后,我试图说服自己编写单子解析器仍然可以相当紧凑。

所以而不是

我们可以简单地拥有:

这与 Anthony 提供的应用版本非常相似:

...除了在<<!概念上类似于<*定义为liftA2 const含义“序列但丢弃左侧提供的值和使用值”的运算符。

当然 << 对于 来说 是个坏名字,如果我们遵循与and相同的逻辑liftM2 const,它会暗示这<<等价于。flip >>>>==<<

我没有在一个名称下找到“liftM2 const”。这是因为它没有那么有用吗?

0 投票
1 回答
474 浏览

haskell - Applicative 的 ghci 特例?

在 ghci 中:

这是否意味着 ghci 执行 Applicative 并显示结果,就像IO

请注意,pure ()不要pure (+1)打印任何内容。

0 投票
2 回答
1053 浏览

haskell - State 和其他 MTL monad 的应用实例?

查看 的文档Control.Applicative,我注意到它们具有某些 monad 的实例声明(例如IOMaybe尤其是ST),但没有 MTL monad 的实例,例如Stateand RWS。相反,它看起来像定义了一个通用WrappedMonad类型,我猜它是为了涵盖所有其他情况。

所以这是我的问题:

  1. 为什么没有ApplicativeMTL monad 的实例?到目前为止,我自己能找到的最佳答案是一个三年前的帖子,其中有人实施了这些实例,但被立即忽略了。

  2. 有什么关系WrappedMonad?我在 Reddit 上找到了一篇简要解释它的帖子,但我想我对如何使用它感到困惑。

最终,我希望能够以State应用风格使用(正如向我推荐的那样),但如果我不得不用WrappedMonad数据构造函数乱扔代码,那么这似乎不是一场胜利。我也可以完全忽略,并以与 相同的方式自己WrappedMonad定义实例,依此类推:就and ... 而言,但这似乎也很愚蠢。ApplicativeIOSTreturnap

0 投票
2 回答
1482 浏览

f# - F#对元组数组进行排序

我有一个元组数组和一个标准。我想对元组进行排序并挑选出符合要求的元组。
对于元组,我忽略了第一个元素,将第二个元素和第四个元素按普通方式排序,但也将第三个元素倒序排序;我有一个标准元组,因为所有具有第二个元素的元组至少与标准一样大,而第三个元素至多与标准一样大都是合格的元组。在上面的例子中,合格的元组是:= [| ("C", 0, 3.0M, 4L) |] 条件是:第二个元素>= 0 第三个元素<= 4.5M 第四个元素>= 4L 但是我的代码不起作用!让我知道如何编写一个函数可以完成这项工作!谢谢,周末愉快。约翰

0 投票
4 回答
1826 浏览

haskell - 为什么<*>中的函数为Nothing时Maybe的Applicative实例不给出任何内容

我是haskell的初学者,正在阅读Learn you a haskell book。一段时间以来,我一直在尝试消化函子和应用函子。

在应用函子主题中,实例实现Maybe

因此,据我了解,Nothing如果左侧函子 (for <*>) 为 Nothing,我们会得到。对我来说,这似乎更有意义

所以这个应用函子没有效果。有什么用例,如果有的话Nothing

说,我有一个Maybe String我不知道的价值。我必须把它Maybe交给第三方功能,但希望它的结果先通过几个Maybe (a -> b)。如果其中一些功能是Nothing我希望他们默默地返回他们的输入,而不是给出 a Nothing,这是数据丢失。

Nothing那么,在上述实例中返回背后的想法是什么?

0 投票
1 回答
336 浏览

haskell - 哪个应用函子用于传递共享参数?

我想我有点理解应用函子在 Haskell 中是如何工作的,并且我将它们用于基本数据类型(也许,或者......)。但是,我通过以下示例发现了这个问题:

可以用应用风格重写:

我很惊讶它编译并且确实按预期工作,但是有人可以告诉我哪个 Applicative Functor 用于此以及它是如何定义的?

更新:我想我知道它是如何工作的,但我不知道它在哪里定义。

0 投票
4 回答
591 浏览

haskell - 在 Haskell 中合并/追加 Justs

我正在尝试做在 Haskell 中必须非常明显的事情,即 go fromJust [1]Just [2]to Just [1, 2]。但是我在网上找不到任何东西,因为我一直在寻找相关但无用的页面。那么,您如何实现这一目标?