- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我能够理解 Haskell 中无点函数的基础知识:
addOne x = 1 + x
addOne = (+ 1)
average
为例。函数写为:
average xs = realToFrac (sum xs) / genericLength xs
xs
, 但是
http://pointfree.io/出来:
average = ap ((/) . realToFrac . sum) genericLength
average
与调用
ap
相同关于两个函数,组成
(/) . realToFrac . sum
和
genericLength
ap
函数对我来说毫无意义,文档
http://hackage.haskell.org/package/base-4.8.1.0/docs/Control-Monad.html#v:ap状态:
ap :: Monad m => m (a -> b) -> m a -> m b
In many situations, the liftM operations can be replaced by uses of ap,
which promotes function application.
return f `ap` x1 `ap` ... `ap` xn
is equivalent to
liftMn f x1 x2 ... xn
let average = liftM2 ((/) . realToFrac . sum) genericLength
ap ((/) . realToFrac . sum) genericLength
的表达式如何?工作?你能解释一下
ap
比文档更简单?
最佳答案
任何 lambda 项都可以重写为仅使用一组合适的 combinators 的等价项。并且没有 lambda 抽象。此过程称为 abstraciton elimination .在此过程中,您希望从内到外移除 lambda 抽象。所以一步你有λx.M
在哪里 M
已经没有 lambda 抽象,你想摆脱 x
.
M
是 x
, 你替换 λx.x
与 id
(id
在组合逻辑中通常用 I
表示)。 M
不包含 x
,您将术语替换为 const M
(const
在组合逻辑中通常用 K
表示)。 M
是 PQ
,即术语为λx.PQ
,你想“推”x
在函数应用程序的两个部分中,以便您可以递归处理这两个部分。这是通过使用 S
来完成的。组合子定义为 λfgx.(fx)(gx)
,也就是需要两个函数,通过x
对他们两个,并将结果一起应用。您可以轻松验证 λx.PQ
相当于S(λx.P)(λx.Q)
,我们可以递归地处理这两个子项。S
组合器在 Haskell 中可用 ap
(或 <*>
)专门用于 reader monad。 λx.M
具有等效功能的基本是解除
M :: a
致读者 monad
r -> a
(其实读者应用部分就够了),其中
r
是
x
的类型.如果我们修改上面的过程:
M
是 x
.然后我们“举”x
至id
, 摆脱变量。下面的其他情况只是将表达式提升到应用仿函数的机械应用:λx.M
在哪里 M
不包含 x
,它只是提升M
给读者应用程序,即 pure M
.确实,对于 (->) r
, pure
相当于const
. <*> :: f (a -> b) -> f a -> f b
是函数应用程序提升到一个单子(monad)/应用程序。这正是我们所做的:我们举起两个部分 P
和 Q
给读者申请,然后使用<*>
将它们绑定(bind)在一起。 B
and C
are used ,在 Haskell 中对应于函数
(.)
和
flip
.再说一次,
(.)
只是
fmap
/
<$>
供读者申请。 (我不知道有这样一个用于表达
flip
的内置函数,但对于读者应用程序,它会被视为
f (a -> b) -> a -> f b
的特化。)
关于haskell - 在 Haskell 的无点函数中理解 `ap`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33454650/
我注意到在将日期转换为字符串时缺少“ap/a/AP/a”。对于“h:m:s ap”,即我得到“11:5:42”。对于每个“ap/a/AP/a”形式也会发生同样的情况。 我缺少什么? void Deco
我想扫描并列出可用的 WIFI 接入点,并允许用户从 Windows 应用商店应用程序的自定义界面连接到一个接入点。 我知道 WiFi native API,但无法在 Windows 应用商店应用程序
所以在 Xcode 中,供应配置文件说 aps-environment 授权是其中的一部分,但在存档之后供应配置文件缺少 aps-entitlement。 最佳答案 Xcode 8 发行说明提到了这个
我试图了解ap,但遇到了麻烦。 在 fantasyland ,詹姆斯·福布斯 说: First we teach a function how to interact with our type, b
我的字符串是“2358132235”。我需要找出这是否是字符串数字正在进行算术级数。我可以做到直到8,但当我达到13时,我不知道如何处理多位数字在这里。有人可以帮忙吗。谢谢。 私有(private)静
刚收到一封来自 Apple 的电子邮件,说明我的应用是(复制如下) 好的,没问题。我删除了旧的配置文件,确保新的配置文件有一个 aps key **aps-environment production
这个问题不太可能帮助任何 future 的访问者;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况有关,这些情况并不普遍适用于互联网的全局受众。为了帮助使这个问题更广泛地适用,visit
1、视图 ? 1
with data as ( select 1 id, 'A' name, 'fruit' r_group, '2007' year, '04' month, 5 sales from dual
由于某种原因,我们的临时配置文件没有 aps-environment 权利!我们已确保在为该应用 ID 启用生产 apns 后生成配置文件。实际上,我们甚至为该应用程序 ID 创建了一个新的临时配置文
我已阅读 Where does xcode take application's Identifier from? , XCode bundle identifier formatting from
我正在经历https://www.scala-exercises.org/对于猫来说。我想我明白Apply.ap 是什么意思。但我看不到它有任何用途。 有什么区别: Apply[Option].map
我正在编写一个函数,该函数接受一个值作为输入,在该输入上调用一个函数,如果结果是Just x,它应该返回x;否则,它应该返回原始输入。 换句话说,这个函数(我不知道该调用什么): foo :: (a
我是OpenCV的新手。我正在使用anaconda spyder控制台编写Python代码。我在这里采用了代码形式(https://www.pyimagesearch.com/2014/08/25/4
在 Haskell 中使用“ap”monad 的正确方法是什么?我想做类似的事情: main = (putStr . ap (++) show) "main = (putStr . ap (++) s
在我接触到这个方法之前,我以为我理解了递归。我对这件事的时间安排感到非常惊讶,因此请求你们的帮助。 public static void mystery5(String sWord) { in
我正在经历https://www.scala-exercises.org/对于猫来说。我想我明白Apply.ap 是什么意思。但我看不到它有任何用途。 有什么区别: Apply[Option].map
我的应用程序在构建期间安装的 Android 设备上成功运行,但是当我通过蓝牙/whatsapp 从我的设备将此应用程序发送到另一台设备时,它无法在此设备上运行,显示应用程序未安装错误...任何机构都
问题是: 给定一个由未知大小的整数和其他三个 int 值组成的 ArrayList,删除 ArrayList 中位于 int 值指定的索引位置的三个元素。将 ArrayList 的第一个元素设置为三个
我是一名计算机科学学生,我不明白为什么我的添加索引的语句不起作用。具体来说,我应该编写一个脚本,为供应商表中的邮政编码字段添加 AP 数据库的索引。我尝试使用以下声明来做到这一点: CREATE IN
我是一名优秀的程序员,十分优秀!