问题标签 [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 回答
1560 浏览

haskell - 用 Monad 的 Applicative 来定义 Functor 更好,反之亦然?

这是一个普遍的问题,与任何一段代码无关。

假设你有一个类型T a可以被赋予一个Monad. 由于每个 monad 都是一个Applicativeby 分配pure = returnand (<*>) = ap,然后每个 applicative 都是一个Functorvia fmap f x = pure f <*> x,所以最好先定义你的实例Monad,然后再简单地给出andT的实例?ApplicativeFunctor

对我来说感觉有点落后。如果我在做数学而不是编程,我会认为我会首先证明我的对象是一个函子,然后继续添加限制,直到我也证明它是一个单子。我知道 Haskell 只是受到范畴论的启发,显然构建证明时使用的技术不是编写有用程序时使用的技术,但我想从 Haskell 社区获得意见。从Monad下到下会更好Functor吗?或从Functor最多Monad

0 投票
1 回答
318 浏览

haskell - Safe read in Aeson parseJSON

I'm using Aeson to parse json quote data from Yahoo's API. A quote might look like this:

(that's using this YQL query)

As you can see, the numbers are quoted. I can write a fromJSON implementation like this:

which is the same as what would be derived. Unfortunately this only works if I want Open, High, Low, etc, to be a Text type. The parse fails if I try and have any of those fields as Double, say.

I can write this:

to get it as anything I like, but this uses read, which is a partial function. How would I get the above functionality without using a partial function?

0 投票
2 回答
15034 浏览

scala - 何时以及为什么应该在 Scala 中使用 Applicative Functor

我知道Monad可以用 Scala 表示如下:

我明白它为什么有用了。例如,给定两个函数:

我可以很容易地编写函数getPhoneByUserId(userId: Int),因为Option它是一个 monad:

...

现在我Applicative Functor在 Scala 中看到:

我想知道什么时候应该使用它而不是monad 。我猜 Option 和 List 都是Applicatives. 您能否给出使用applywith Option 和 List 的简单示例,并解释为什么我应该使用它而不是 flatMap

0 投票
3 回答
838 浏览

haskell - optparse-applicative:显示不带参数调用的程序的帮助

我正在使用optparse-applicative版本 0.7.0.2。

我想编写一个带有一些强制选项的解析器,但是当没有选项调用它时,它会同时显示用法和帮助,而不仅仅是用法(也就是说,我希望没有选项的调用表现得像使用 的调用--help)。

即使文档说有可能,我也不知道该怎么做:

此示例中的 hello 选项是必需的(因为它没有默认值),因此不带任何参数运行程序将显示帮助文本

有一个可行的例子吗?主文档中的那个对我不起作用(它只打印使用情况。)

0 投票
2 回答
310 浏览

haskell - 简单 IO 示例的应用 vs 单子样式

这里有两个非常简单的函数fg.

读取和写入的文件*10以和f的应用样式写入。读取和写入的文件以monadic 样式写入,带有. (我故意避免使用in来强调下面的问题)。pure(<*>)*10g>>=liftMg

f和之间的语义区别是什么g?或者在这种情况下,它只是一种风格选择吗?

0 投票
2 回答
587 浏览

haskell - 应用函子分析

我一直在尝试了解应用函子的静态分析。许多消息来源说,与 monad 相比,使用它们的一个优势是对静态分析的敏感性。

然而,我能找到的唯一一个实际执行静态分析的例子太复杂了,我无法理解。有没有更简单的例子?

具体来说,我想知道我是否可以对递归应用程序执行静态分析。例如,类似:

分析上面的代码,有没有可能检测到它在y上是递归的?还是参考透明度仍然阻止这成为可能?

0 投票
1 回答
65 浏览

function - “UNIX 字节流的组成”是什么意思?

在《Lisp In Small Pieces》这本书的开头页,有一段是这样的:

基于“函数”的概念,一个经过几个世纪数学研究成熟的概念,应用语言在计算中无处不在;它们以各种形式出现,例如 Un*x 字节流的组合、Emacs 编辑器的扩展语言以及其他脚本语言。

谁能详细说明“unix字节流的组成”?这是什么意思?以及它与应用程序/函数式编程有何关系?

谢谢,

/布鲁因

0 投票
2 回答
427 浏览

scala - 使用 Scala 应用程序将 List[Object] 转换为案例类

我正在编写一个使用Datomic作为后端数据库的 Scala Play Framework应用程序。

java.util.List当我查询 Datomic 时,它以s of Lists of s 的形式返回“rows” java.lang.Object。例如:

我想以最符合 Scala 习惯的方式将这些转换为案例类。

目前我的代码如下所示:

这有点丑陋且容易出错。

有没有办法使用应用函子来实现同样的事情?应用函子是最好的方法吗?有没有更好的办法?

0 投票
3 回答
251 浏览

haskell - 如何构造带约束的 Applicative 实例(类似于使用 ContT 构造 Monad 实例)

这个问题涉及Monad从 monad 构造一个适当的实例,但仅在某些约束下 - 例如Set。诀窍是将它包装成ContT,这会将约束推迟到包装/展开其值。

现在我想对Applicatives 做同样的事情。特别是,我有一个Applicative实例,其pure具有类型类约束。有没有类似的技巧如何构造一个有效的Applicative实例?

(是否有“所有应用函子之母”,就像单子一样?)

0 投票
1 回答
1092 浏览

haskell - 理解 Data.Functor.Constant 构造函数和应用规律

我对 Data.Functor.Constant 的类型构造函数以及它如何与应用程序一起使用感到困惑。


首先是构造函数:

当我检查类型Constant :: a -> Constant a b

我看到它需要一个a,但返回一个Constant a b

b从何而来,为什么存在?


其次,我在 Applicative 上苦苦挣扎:

我了解 Constant 需要在内部有一个 Monoid 才能成为 Applicative 实例。

它必须遵守的一条法律是:pure id <*> Constant x = x

我认为这与以下内容相同:Constant id <*> Constant x = x

但我想我错了,因为下面的代码清楚地显示了纯粹的不同行为。

我看到它只有x在同一个幺半群的情况下才有效,除非我使用纯。所以我不确定为什么 pure 的工作方式不同。我怀疑这与b他们在同一个问题中的原因有关。

总结一下这两个问题:

  1. 在 Constant 构造函数中做了什么b

  2. 为什么即使幺半群内部不同,pure 也会起作用?

非常感谢!