问题标签 [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 - 将两个一元值成对并返回
我正在玩 Parsec,我想将两个解析器组合成一个,并将结果放在一对中,然后将另一个函数提供给它以对解析结果进行操作以编写如下内容:
所以我写了这个:
和
有没有类似于 (<&>) 的东西已经在某处实现了?或者这可以写成无意义的吗?我试过fmap (,)
了,但似乎很难匹配类型。
haskell - 如何混合应用函子和箭头
我在 Andrew Birkett 的博客Applicative arrows for XML &&& return to pure上读到,我们可以混合使用箭头和应用函子。
我自己尝试过,但我没有我所期望的。我想要这个结果:
但我得到了这个:
我认为我的代码中有一个转折,但我不知道在哪里搜索。
如果有人可以提出一些帮助,下面是我的代码。
haskell - 与单子解析相比,应用解析有什么好处?
似乎有一个共识,您应该将 Parsec 用作应用程序而不是 monad。与单子解析相比,应用解析有什么好处?
- 风格
- 表现
- 抽象
monadic 解析出来了吗?
haskell - 应用的一元等价<*
在阅读了Anthony对与样式相关的解析器问题的回复后,我试图说服自己编写单子解析器仍然可以相当紧凑。
所以而不是
我们可以简单地拥有:
这与 Anthony 提供的应用版本非常相似:
...除了在<<!
概念上类似于<*
定义为liftA2 const
含义“序列但丢弃左侧提供的值和使用值”的运算符。
当然 << 对于 来说 是个坏名字,如果我们遵循与and相同的逻辑liftM2 const
,它会暗示这<<
等价于。flip >>
>>=
=<<
我没有在一个名称下找到“liftM2 const”。这是因为它没有那么有用吗?
haskell - Applicative 的 ghci 特例?
在 ghci 中:
这是否意味着 ghci 执行 Applicative 并显示结果,就像IO
?
请注意,pure ()
不要pure (+1)
打印任何内容。
haskell - State 和其他 MTL monad 的应用实例?
查看 的文档Control.Applicative
,我注意到它们具有某些 monad 的实例声明(例如IO
,Maybe
尤其是ST
),但没有 MTL monad 的实例,例如State
and RWS
。相反,它看起来像定义了一个通用WrappedMonad
类型,我猜它是为了涵盖所有其他情况。
所以这是我的问题:
为什么没有
Applicative
MTL monad 的实例?到目前为止,我自己能找到的最佳答案是一个三年前的帖子,其中有人实施了这些实例,但被立即忽略了。有什么关系
WrappedMonad
?我在 Reddit 上找到了一篇简要解释它的帖子,但我想我对如何使用它感到困惑。
最终,我希望能够以State
应用风格使用(正如向我推荐的那样),但如果我不得不用WrappedMonad
数据构造函数乱扔代码,那么这似乎不是一场胜利。我也可以完全忽略,并以与 相同的方式自己WrappedMonad
定义实例,依此类推:就and ... 而言,但这似乎也很愚蠢。Applicative
IO
ST
return
ap
f# - F#对元组数组进行排序
我有一个元组数组和一个标准。我想对元组进行排序并挑选出符合要求的元组。
对于元组,我忽略了第一个元素,将第二个元素和第四个元素按普通方式排序,但也将第三个元素倒序排序;我有一个标准元组,因为所有具有第二个元素的元组至少与标准一样大,而第三个元素至多与标准一样大都是合格的元组。在上面的例子中,合格的元组是:= [| ("C", 0, 3.0M, 4L) |] 条件是:第二个元素>= 0 第三个元素<= 4.5M 第四个元素>= 4L 但是我的代码不起作用!让我知道如何编写一个函数可以完成这项工作!谢谢,周末愉快。约翰
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
那么,在上述实例中返回背后的想法是什么?
haskell - 哪个应用函子用于传递共享参数?
我想我有点理解应用函子在 Haskell 中是如何工作的,并且我将它们用于基本数据类型(也许,或者......)。但是,我通过以下示例发现了这个问题:
可以用应用风格重写:
我很惊讶它编译并且确实按预期工作,但是有人可以告诉我哪个 Applicative Functor 用于此以及它是如何定义的?
更新:我想我知道它是如何工作的,但我不知道它在哪里定义。
haskell - 在 Haskell 中合并/追加 Justs
我正在尝试做在 Haskell 中必须非常明显的事情,即 go fromJust [1]
和Just [2]
to Just [1, 2]
。但是我在网上找不到任何东西,因为我一直在寻找相关但无用的页面。那么,您如何实现这一目标?