Haskell 中类型转换(::) 和右键头(->) 是什么 ?
- Prelude> :t (::)
- <interactive>:1:1: parse error on input `::'
- Prelude> :i (::)
- <interactive>:1:1: parse error on input `::'
复制代码
那 :: 是什么呢 ?
难道是解释器/编译器的 保留字 ?
- Prelude> :t (->)
- <interactive>:1:1: parse error on input `->'
- Prelude> :i (->)
- data (->) a b -- Defined in GHC.Prim
复制代码
-> 是一个数据结构,怎么理解 ?
这个是 case..of 中的那个,还是函数类型中的那个呀 ?
难道是 函数类型中的那个,那 case..of 中的右键头怎么理解?
[ 本帖最后由 izhier 于 2009-4-24 11:25 编辑 ]
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
正想说“汗”,呵呵。
又开始类比了, flw 兄的帖子看来楼主是没有看。
我还以为不一样呢
原来两者都一样呀 !
[ 本帖最后由 izhier 于 2009-4-24 14:04 编辑 ]
汗。什么时候冒出“强制”“转换”了?
:: 从来都是类型声明。
-> 出现在类型声明中时,表示一个类型,这是 Haskell 将函数当作 first class 对象的一个表现之一。
复制代码
类型签名中的 :: 和 类型转换中的 :: 是不是一回事 ? (不是一回事吧 ???)
类型签名中的是不是可以理解为:
把 (+) 的类型强制转换为 (Num a) => a -> a -> a 类型 ?
还是
类型签名只是一个声明,语法的一部分 ?
强制类型转换 :: 可以转换一个函数吗 ? (高阶函数返回的 或 section 函数,其中含有类型变量,不知可以实现不?)
没错,:: 和 (case ... of 中的) -> 都是 Haskell 语法的一部分。
(->) a b 实际就是 a -> b,表示 function type
-> 是 case ... of 语法的一部分,记住就可以了。
[ 本帖最后由 MMMIX 于 2009-4-24 12:09 编辑 ]