从我读到的内容来看,$
被描述为“将函数应用于其参数”。然而,它似乎不太像(apply ...)
在 Lisp 中,因为它是一个二元运算符,所以它看起来唯一的作用就是有时有助于避免括号,例如foo $ bar quux
代替foo (bar quux)
。我理解正确吗?后一种形式是否被认为是“糟糕的风格”?
$
当左括号和右括号之间的距离大于良好的可读性保证时,或者如果您有多层嵌套括号,则优先于括号。
例如
i (h (g (f x)))
可以重写
i $ h $ g $ f x
换句话说,它代表右联想函数的应用。这很有用,因为普通函数应用程序与左侧关联,即以下
i h g f x
...可以重写如下
(((i h) g) f) x
其他方便的用途($)
功能包括用它压缩列表:
zipWith ($) fs xs
这将应用函数列表中的每个函数fs
到列表中相应的参数xs
,并将结果收集到列表中。对比sequence fs x
它应用函数列表fs
对于单个参数x
并收集结果;和fs <*> xs
应用列表中的每个函数fs
列表中的每个元素xs
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)