为什么它适用第二个参数?

软托运人

我试图理解应用函子的交换定律:

u <*> pure y = pure ($ y) <*> u

让我感到困惑的是,函数 application $ y,请考虑以下示例:

($ 2) :: (a -> b) -> b 

为什么第二个参数被应用而不是第一个?

左转

那是一个操作符部分几个简单的例子:

Prelude> (/2) <$> [1..8]
[0.5,1.0,1.5,2.0,2.5,3.0,3.5,4.0]
Prelude> (:"!") <$> ['a'..'e']
["a!","b!","c!","d!","e!"]

该部分(:"!")是 的语法糖\c -> c:"!",即它需要一个字符c并将其添加到字符串之前"!"

同样,该部分($ 2)采用一个函数f并将其简单地应用于number 2

请注意,这与普通的部分应用程序不同

Prelude> ((/) 2) <$> [1..8]
[2.0,1.0,0.6666666666666666,0.5,0.4,0.3333333333333333,0.2857142857142857,0.25]

在这里,我只是将该函数(/)应用于一个固定参数 2,即股息这也可以写为左部分 (2/)但正确的部分(/2)应用2作为除数来代替。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么第二个参数不适用于strtol?

为什么第二个条件总是触发,即使它没有被满足?

为什么第二个角色对第二个变量迷路

该Prolog谓词中的第二个参数是什么?为什么它是空的?

为什么这个函数接受第二个参数

为什么函数的第二个参数永远不会

为什么在安装tmpfs时需要第二个“ tmpfs”参数?

双功能 - 应用方法应始终返回第二个参数。为什么?

在std :: exchange中,为什么第二个模板参数默认?

为什么在 Python 协程中没有检测到第二个参数?

为什么std :: assoc_laguerre的第二个参数是无符号的int?

为什么要在 WriteProcessMemory() 函数的第二个参数中使用 (void*)?

为什么我的递归函数不接受第二个参数?

为什么lw指令的第二个参数同时接受offset和regSource?

Backbone Model.sync代理为什么第二个参数(模型)是必需的

为什么pthread_join()的第二个参数是**,即指向指针的指针?

NSLocalizedString()的第二个参数是什么?

第二个参数是什么?

Python 打开第二个窗口。为什么?

为什么第二个for循环不执行?

为什么xargs不替换第二个{}

为什么不评估第二个ifelse?

为什么第二个scanf被跳过?

为什么第二个for循环不执行?

为什么第二个for循环未运行?

为什么 Laravel 跳过第二个 Foreach()

super()的第二个参数?

OpenProcess第二个参数

为什么第二个参数没有根据第一个参数进行过滤?