免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: drunkedcat
打印 上一主题 下一主题

haskell 中 '$' 能用在哪些地方呢? [复制链接]

论坛徽章:
0
11 [报告]
发表于 2009-04-13 09:40 |只看该作者
原帖由 izhier 于 2009-4-12 22:54 发表
原来一直认为使用 $ 等效为:
替换 '$' 为 '(',行尾再加一个 ')'

看来没这么简单!
还要考虑优先级

不考虑优先级,$就等效于“此后内容用括号”。
“只是 $ 函数只支持一个参数的函数,并且是 infix”,没这说法吧。我以前说过,infix是语法糖,不要针对他来讨论语法。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
12 [报告]
发表于 2009-04-13 10:19 |只看该作者
原帖由 Magicloud 于 2009-4-13 09:40 发表

不考虑优先级,$就等效于“此后内容用括号”。

不正确。
正确的其实是【此前内容用括号包起来,此后内容也用括号包起来】

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
13 [报告]
发表于 2009-04-13 10:24 |只看该作者
这有个 $ 的文章,讲的很透彻,建议看看
http://www.libra-aries-books.co. ... l/dollar/index.html

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
14 [报告]
发表于 2009-04-13 10:30 |只看该作者
原帖由 flw 于 2009-4-13 10:19 发表

正确的其实是【此前内容用括号包起来,此后内容也用括号包起来】

其实,这个也不是完全准确的,考虑存在多个 $ 的情况。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
15 [报告]
发表于 2009-04-13 10:34 |只看该作者
原帖由 MMMIX 于 2009-4-13 10:30 发表

其实,这个也不是完全准确的,考虑存在多个 $ 的情况。

是啊。所以这样理解终究不是办法,还是老老实实搞清楚 $ 的本意好了。

论坛徽章:
0
16 [报告]
发表于 2009-04-13 10:42 |只看该作者
原帖由 Magicloud 于 2009-4-13 09:40 发表
我以前说过,infix是语法糖

infix是语法糖?
最终转换为 prefix ?

那 prefix 函数
`function` (infix) 这样用
是否也是语法糖 ?

论坛徽章:
0
17 [报告]
发表于 2009-04-13 11:03 |只看该作者
原帖由 izhier 于 2009-4-13 10:42 发表

infix是语法糖?
最终转换为 prefix ?

那 prefix 函数
`function` (infix) 这样用
是否也是语法糖 ?

1 + 2 等效于 (+) 1 2
take 1 [0, 1] 等效于 1 `take` [0, 1]
无论是(+)还是`take`,其目的是代码的美观易读,对于程序逻辑没有丝毫影响。

论坛徽章:
0
18 [报告]
发表于 2009-04-13 11:05 |只看该作者
原帖由 flw 于 2009-4-13 10:19 发表

不正确。
正确的其实是【此前内容用括号包起来,此后内容也用括号包起来】

嗯,我忽略“haskell函数只有一个参数”这条了。

论坛徽章:
0
19 [报告]
发表于 2009-04-13 11:05 |只看该作者
原帖由 MMMIX 于 2009-4-13 10:30 发表

其实,这个也不是完全准确的,考虑存在多个 $ 的情况。

存在多个也是这样的,一级一级匹配而已。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
20 [报告]
发表于 2009-04-13 11:13 |只看该作者
原帖由 Magicloud 于 2009-4-13 11:05 发表

存在多个也是这样的,一级一级匹配而已。

你这个“一级一级匹配”实际上就是指结合性。

你只要搞清楚 $ 的功能是 apply,优先级是 0,结合性是右结合,就行了。
多么简单明了啊。整那个括号替换完全没必要。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP