Haskell 中类型转换(::) 和右键头(->) 是什么 ?

发布于 2022-08-17 17:19:43 字数 794 浏览 8 评论 5

  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 编辑 ]

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

长伴 2022-08-22 07:53:50

原帖由 flw 于 2009-4-24 13:31 发表
汗。什么时候冒出“强制”“转换”了?
:: 从来都是类型声明。

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

正想说“汗”,呵呵。
又开始类比了, flw 兄的帖子看来楼主是没有看。

尾戒 2022-08-22 01:25:43

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

我还以为不一样呢

:: 从来都是类型声明。

原来两者都一样呀 !

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

澉约 2022-08-22 00:03:55

汗。什么时候冒出“强制”“转换”了?
:: 从来都是类型声明。

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

苍景流年 2022-08-21 05:43:22
  1. (+)  :: (Num a) => a -> a -> a       --类型签名
  2. read "123" ::Int                           --类型转换

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

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

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

耳钉梦 2022-08-20 03:23:05

原帖由 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 编辑 ]

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文