问题标签 [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 - 用 Monad 的 Applicative 来定义 Functor 更好,反之亦然?
这是一个普遍的问题,与任何一段代码无关。
假设你有一个类型T a
可以被赋予一个Monad
. 由于每个 monad 都是一个Applicative
by 分配pure = return
and (<*>) = ap
,然后每个 applicative 都是一个Functor
via fmap f x = pure f <*> x
,所以最好先定义你的实例Monad
,然后再简单地给出andT
的实例?Applicative
Functor
对我来说感觉有点落后。如果我在做数学而不是编程,我会认为我会首先证明我的对象是一个函子,然后继续添加限制,直到我也证明它是一个单子。我知道 Haskell 只是受到范畴论的启发,显然构建证明时使用的技术不是编写有用程序时使用的技术,但我想从 Haskell 社区获得意见。从Monad
下到下会更好Functor
吗?或从Functor
最多Monad
?
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?
scala - 何时以及为什么应该在 Scala 中使用 Applicative Functor
我知道Monad
可以用 Scala 表示如下:
我明白它为什么有用了。例如,给定两个函数:
我可以很容易地编写函数getPhoneByUserId(userId: Int)
,因为Option
它是一个 monad:
...
现在我Applicative Functor
在 Scala 中看到:
我想知道什么时候应该使用它而不是monad 。我猜 Option 和 List 都是Applicatives
. 您能否给出使用apply
with Option 和 List 的简单示例,并解释为什么我应该使用它而不是 flatMap
?
haskell - optparse-applicative:显示不带参数调用的程序的帮助
我正在使用optparse-applicative
版本 0.7.0.2。
我想编写一个带有一些强制选项的解析器,但是当没有选项调用它时,它会同时显示用法和帮助,而不仅仅是用法(也就是说,我希望没有选项的调用表现得像使用 的调用--help
)。
即使文档说有可能,我也不知道该怎么做:
此示例中的 hello 选项是必需的(因为它没有默认值),因此不带任何参数运行程序将显示帮助文本
有一个可行的例子吗?主文档中的那个对我不起作用(它只打印使用情况。)
haskell - 简单 IO 示例的应用 vs 单子样式
这里有两个非常简单的函数f
和g
.
读取和写入的文件*10
以和f
的应用样式写入。读取和写入的文件以monadic 样式写入,带有. (我故意避免使用in来强调下面的问题)。pure
(<*>)
*10
g
>>=
liftM
g
f
和之间的语义区别是什么g
?或者在这种情况下,它只是一种风格选择吗?
haskell - 应用函子分析
我一直在尝试了解应用函子的静态分析。许多消息来源说,与 monad 相比,使用它们的一个优势是对静态分析的敏感性。
然而,我能找到的唯一一个实际执行静态分析的例子太复杂了,我无法理解。有没有更简单的例子?
具体来说,我想知道我是否可以对递归应用程序执行静态分析。例如,类似:
分析上面的代码,有没有可能检测到它在y上是递归的?还是参考透明度仍然阻止这成为可能?
function - “UNIX 字节流的组成”是什么意思?
在《Lisp In Small Pieces》这本书的开头页,有一段是这样的:
基于“函数”的概念,一个经过几个世纪数学研究成熟的概念,应用语言在计算中无处不在;它们以各种形式出现,例如 Un*x 字节流的组合、Emacs 编辑器的扩展语言以及其他脚本语言。
谁能详细说明“unix字节流的组成”?这是什么意思?以及它与应用程序/函数式编程有何关系?
谢谢,
/布鲁因
scala - 使用 Scala 应用程序将 List[Object] 转换为案例类
我正在编写一个使用Datomic作为后端数据库的 Scala Play Framework应用程序。
java.util.List
当我查询 Datomic 时,它以s of List
s of s 的形式返回“rows” java.lang.Object
。例如:
我想以最符合 Scala 习惯的方式将这些转换为案例类。
目前我的代码如下所示:
这有点丑陋且容易出错。
有没有办法使用应用函子来实现同样的事情?应用函子是最好的方法吗?有没有更好的办法?
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
他们在同一个问题中的原因有关。
总结一下这两个问题:
在 Constant 构造函数中做了什么
b
?为什么即使幺半群内部不同,pure 也会起作用?
非常感谢!