当前位置:  开发笔记 > 编程语言 > 正文

我什么时候应该使用$(并且它总是可以用括号替换)?

如何解决《我什么时候应该使用$(并且它总是可以用括号替换)?》经验,为你挑选了2个好方法。

从我正在阅读的内容来看,它$被描述为"将一个函数应用于它的参数".但是,它似乎不像(apply ...)Lisp 那样工作,因为它是一个二元运算符,所以它看起来真的唯一有助于有时避免使用括号,foo $ bar quux而不是foo (bar quux).我明白了吗?后一种形式被认为是"坏风格"吗?



1> Apocalisp..:

$ 当开放和关闭的parens之间的距离大于良好的可读性保证,或者如果你有几层嵌套的括号时,优先使用括号.

例如

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.



2> Steven Dee..:

你大部分时间都理解正确 - 也就是说,大约99%的$使用是为了避免括号,是的,在大多数情况下,它似乎优于括号.

但请注意:

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

也就是说,$是一个函数; 因此,它可以传递给函数,由它组成,以及你想用它做的任何其他事情.我想我之前看到它曾被人们用组合器搞砸了.

推荐阅读
手机用户2402852307
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有