免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5575 | 回复: 5
打印 上一主题 下一主题

Haskell 中类型转换(::) 和右键头(->) 是什么 ? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-04-24 11:24 |只看该作者 |倒序浏览

  1. Prelude> :t (::)

  2. <interactive>:1:1: parse error on input `::'
  3. Prelude> :i (::)

  4. <interactive>:1:1: parse error on input `::'
复制代码

那 :: 是什么呢 ?
难道是解释器/编译器的 保留字 ?

  1. Prelude> :t (->)

  2. <interactive>:1:1: parse error on input `->'
  3. Prelude> :i (->)
  4. data (->) a b   -- Defined in GHC.Prim
复制代码


-> 是一个数据结构,怎么理解 ?
这个是 case..of 中的那个,还是函数类型中的那个呀 ?
难道是 函数类型中的那个,那 case..of 中的右键头怎么理解?

[ 本帖最后由 izhier 于 2009-4-24 11:25 编辑 ]

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

那 :: 是什么呢 ?
难道是解释器/编译器的 保留字 ?

没错,:: 和 (case ... of 中的) -> 都是 Haskell 语法的一部分。

Prelude> :i (->)
data (->) a b   -- Defined in GHC.Prim
-> 是一个数据结构,怎么理解 ?

(->) a b 实际就是 a -> b,表示 function type

那 case..of 中的右键头怎么理解?

-> 是 case ... of 语法的一部分,记住就可以了。

[ 本帖最后由 MMMIX 于 2009-4-24 12:09 编辑 ]

论坛徽章:
0
3 [报告]
发表于 2009-04-24 12:26 |只看该作者

  1. (+)  :: (Num a) => a -> a -> a       --类型签名

  2. read "123" ::Int                           --类型转换
复制代码

类型签名中的 :: 和 类型转换中的 :: 是不是一回事 ? (不是一回事吧 ???)

类型签名中的是不是可以理解为:
把 (+) 的类型强制转换为 (Num a) => a -> a -> a 类型 ?
还是
类型签名只是一个声明,语法的一部分 ?

强制类型转换 :: 可以转换一个函数吗 ? (高阶函数返回的 或 section 函数,其中含有类型变量,不知可以实现不?)

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
4 [报告]
发表于 2009-04-24 13:31 |只看该作者
汗。什么时候冒出“强制”“转换”了?
:: 从来都是类型声明。

-> 出现在类型声明中时,表示一个类型,这是 Haskell 将函数当作 first class 对象的一个表现之一。

论坛徽章:
0
5 [报告]
发表于 2009-04-24 13:56 |只看该作者

回复 #4 flw 的帖子

原帖由 flw 于 2009-4-24 13:31 发表
汗。什么时候冒出“强制”“转换”了?

我还以为不一样呢

:: 从来都是类型声明。

原来两者都一样呀 !

[ 本帖最后由 izhier 于 2009-4-24 14:04 编辑 ]

论坛徽章:
0
6 [报告]
发表于 2009-04-26 13:04 |只看该作者
原帖由 flw 于 2009-4-24 13:31 发表
汗。什么时候冒出“强制”“转换”了?
:: 从来都是类型声明。

-> 出现在类型声明中时,表示一个类型,这是 Haskell 将函数当作 first class 对象的一个表现之一。


正想说“汗”,呵呵。
又开始类比了, flw 兄的帖子看来楼主是没有看。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP