免费注册 查看新帖 |

Chinaunix

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

Haskell 中的语法糖 [复制链接]

论坛徽章:
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
31 [报告]
发表于 2009-04-10 16:02 |只看该作者
原帖由 Magicloud 于 2009-4-10 14:35 发表

那haskell的系统特别的什么程度以至于没有共性?

事实上,Haskell 的类型系统比 C++ 的要强许多,虽然 C++ 也称自己为强类型。当然类型理论我现在也不在行,说不明白,等研究明白了再说吧。
我没说你说不可行,我一直的观点就是,可行而没做,某些程度上表明规范制定、实现者的意愿。

这是当然了,关键要看你怎么理解这个意愿了。他们的意愿是故意采用一种很丑陋的实现从而让你不要用这种特性呢(那为嘛不干脆把这种特性取消掉?),还是说在当前语言的特性集中,这种特性无法很优雅的实现,因此只能暂时的采用一种很丑陋的实现?你也说了,他们对数学美的追求,那你觉得他们会故意采用一种很丑陋的实现么?

论坛徽章:
0
32 [报告]
发表于 2009-04-11 10:39 |只看该作者
元组完全可以由以下代码替换吧?

data Tuple a b ... = Tuple a b ...

论坛徽章:
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
33 [报告]
发表于 2009-04-11 10:49 |只看该作者
原帖由 izhier 于 2009-4-11 10:39 发表
元组完全可以由以下代码替换吧?

data Tuple a b ... = Tuple a b ...

一般的 n 元组呢?

论坛徽章:
0
34 [报告]
发表于 2009-04-11 12:13 |只看该作者
原帖由 MMMIX 于 2009-4-11 10:49 发表
一般的 n 元组呢?

应该分别定义吧?
如果用一个语句定义所有的 n 元组现在 haskell 还不可能实现吧?

论坛徽章:
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
35 [报告]
发表于 2009-04-11 13:19 |只看该作者
原帖由 izhier 于 2009-4-11 12:13 发表

应该分别定义吧?
如果用一个语句定义所有的 n 元组现在 haskell 还不可能实现吧?

哦,看看前面我的回复吧

论坛徽章:
0
36 [报告]
发表于 2009-04-13 09:44 |只看该作者
原帖由 MMMIX 于 2009-4-10 16:02 发表
他们的意愿是故意采用一种很丑陋的实现从而让你不要用这种特性呢(那为嘛不干脆把这种特性取消掉?)

我一直认为元组其实就是一种高级的语法糖,没有专门的类型,没有复杂的操作(prelude中就四个函数)。其实这种特性取消不会使得haskell不能成为一种通用语言,但haskell“热衷”于添加语法特性,所以才没有取消。

论坛徽章:
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
37 [报告]
发表于 2009-04-13 10:16 |只看该作者
原帖由 Magicloud 于 2009-4-13 09:44 发表

但haskell“热衷”于添加语法特性,所以才没有取消。

这种说法是怎么来的?有什么根据么?

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

这种说法是怎么来的?有什么根据么?

相对其它语言,haskell添加新特性的频率很高了……

论坛徽章:
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
39 [报告]
发表于 2009-04-13 13:57 |只看该作者
原帖由 Magicloud 于 2009-4-13 11:07 发表

相对其它语言,haskell添加新特性的频率很高了……

拿具体的数据说话。

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

一般的 n 元组呢?


关于是否可以优雅的实现,既然您能认识到语言特性决定一般n元组无法实现,怎么还会质疑是否优雅的问题。

如果真的存在一般n元组,一般n元组上的函数的输出就无法保证了,实际上是函数的类型无法确定。
这时候,必须要有一个可以表示一切的数据类型,然后定义一系列的函数,还要有cast函数。

处理这种情况,自己定义一个列表就可以了,反正数据类型必须确定(因为语言中不存在不确定的数据类型),需要新增数据类型就自己添加好了。

data CommonType = CommonString String
                | CommonInt Int
                | CommonBool Bool
                | CommonNull
                | CommonList [CommonType]

[ 本帖最后由 cjacker 于 2009-4-13 16:52 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP