applicative相关内容

适用于Haskell

AFAIK是GHC8的新增功能之一,是ApplicativeDo语言扩展,如果可能的话,它将对相应的Applicative方法(,)的do表示减掉.我有以下问题. 如何确定对Applicative方法的废除是否可行?据我所知,它会进行依赖性检查(如果后者取决于前者的结果)来确定资格.还有其他条件吗? 尽管此添加使没有任何Monad实例的类(可能是?)的应用代码更易于阅读.但 ..
发布时间:2020-05-10 21:46:36 其他开发

我无法理解Wikipedia对“应用函子"的定义.

我在Haskell研究函子,应用函子和单子词时,我在 Wikipedia 上找到了这个定义: 在函数式编程中,特别是应用程序Haskell functor 是类似于 monad (return,fmap,join)的结构 没有join,或者像是具有return的 functor . 我无法理解:在我看来,向函子提供return(即pure)不足以获得适用的函子,因为您需要提供ap(即 ..
发布时间:2020-05-10 21:45:54 其他开发

如何证明单子是函子和应用函子?

从理论上讲,单子元是函子的一个子集,特别是应用函子,即使在Haskell的类型系统中未标明它也是如此. 知道给定单子并以return和bind为基础,怎么做: 派生fmap, 派生吗? 解决方案 好吧,fmap只是(a -> b) -> f a -> f b,也就是说,我们要用纯函数转换单子动作的结果.用do标记很容易写: fmap f m = do a ..
发布时间:2020-05-10 21:45:31 其他开发

从monad转换为适用性

好,所以我知道Applicative类型类包含的内容,以及为什么这样做有用.但是在一个不平凡的例子中,我不太了解您如何使用它. 例如,考虑以下相当简单的Parsec解析器: integer :: Parser Integer integer = do many1 space ds ..
发布时间:2020-05-10 21:44:40 其他开发

为什么AccValidation没有Monad实例?

从 validation 软件包的文档中: AccValidation数据类型与Either同构,但是有一个Applicative实例在错误侧累积.也就是说,如果遇到两个(或多个)错误,则使用Semigroup操作将其附加. 由于此Applicative实例,因此没有相应的Bind或Monad实例. AccValidation的示例为“不是单子的应用函子". 对我来说,这还不是很 ..
发布时间:2020-05-10 21:43:34 其他开发

ZipList与Scalaz

假设我有一个数字列表和一个函数列表: val xs: List[Int] = List(1, 2, 3) val fs: List[Int => Int] = List(f1, f2, f3) 现在我想使用Applicative将f1应用于1,将f2应用于2,等等. val ys: List[Int] = xs fs // expect List(f1(1), f2(2), ..
发布时间:2020-05-02 08:02:53 其他开发

类型实例的功能

我通常会这样做,当我看到一些类型实例时,我不知道得到,是写一些良好类型的表达式,看看它返回什么: 有人可以解释这些实例吗?你通常会听到关于List和Maybe的实例,这些实例现在对我来说很自然,但我不明白函数如何成为Functor甚至是Monad。 编辑: 好​​的,这是一个不能编译的有效良好类型表达式: fmap(+ )(+)1(+1)1 解决方案 ,我同 ..
发布时间:2018-06-05 11:26:34 其他开发

应用仿函数作为monoidal函子

正如Hackage所述, Applicative Functors a>,它们是强力松散monoidal函子。那么为什么他们在Haskell中的定义没有如下所示: class Functor f => MonoidalApplicative f其中 mult :: f a - > f b - > f(a,b) unit :: a - > f a starAp :: f(a ..
发布时间:2018-06-05 11:19:00 其他开发

GHCi如何打印由“纯”创建的部分应用值?

我一直在玩弄 Applicative 实例来弄清楚它们是如何工作的。然而,我真的不明白这种行为。 如果我定义了我自己的数据类型,那么应用 pure 来它没有其他参数,没有任何打印输出,但是如果我尝试将结果应用于某个结果,则会出错。 ghci>数据T = A ghci>纯A ghci>纯A 0 :21:1: 使用'print'产生的(Show T)没有实例 在交互 ..
发布时间:2018-06-05 11:09:34 其他开发

在Control.Applicative中命名`pure`函数

为什么在Control.Applicative中将一个值赋给一个名为 pure 的函数? 解决方案 将纯粹看作是一个形容词。 foo在纯价值 4 上应用纯4 = foo 。至于确切的原因,为什么叫做纯粹,可能只有McBride帕特森会知道的。) ..
发布时间:2018-06-05 10:58:49 其他开发

为什么f< $> g< $> x相当于(f。g)< $> x尽管< $>是不是正确的联想?

为什么 f g x 相当于(f。g) x 虽然 不是正确的联想? 在一个流行的成语中使用普通的 $ 时,有一种等同性是有效的,但是目前 $ 是右联合的!) code>具有与 相同的关联性和优先级,但行为不同! 示例: Prelude Control.Applicative> (show。show)只需3 只需“\ ..

(-1,-1),( - 1,0),( - 1,1),(0,-1),(0,1),(1,-1), (1,0),(1,1)]在Haskell中?

[( - 1,-1) ,( - 1,0),( - 1,1),(0,-1),(0,1),(1,-1),(1,0),(1,1)] - 否(0,0) 请注意,列表中没有(0,0)。我使用(dx,dy)元组向上,向下,向左,向右和从坐标对角搜索。 每次我写它,我都觉得应该有一个更简洁,和/或更易于阅读的方式来定义它。我对Haskell比较陌生,我想到了Applicati ..
发布时间:2018-06-05 10:56:15 其他开发

应用风格的计算成本

我在我的网络应用程序中使用了一个小型数据库池。这个特殊的函数: pre $ withPool pool =括号(takeConn池)(putConn池) 可以用适用风格重写: withPool =括号 takeConn * putConn 可以说它的可读性更高,更加优雅。所以很自然,我想写这样写。但是数据库连接池应该很快,而且我担心这种风格会带来不必要 ..
发布时间:2018-06-04 17:28:08 其他开发