Chinaunix

标题: [ML][小贴士]:ML 中的 =, -> 和 => [打印本页]

作者: win_hate    时间: 2008-11-09 11:08
标题: [ML][小贴士]:ML 中的 =, -> 和 =>
如果你学 ML 的方式跟我一样浮躁,很可能被这几个符号搞糊涂:


  1. fun f x = x+1;

  2. fn x => x+1;
复制代码


=  用在 fun 定义的普通函数中,而 => 用在 fn 定义的匿名函数中。

那 -> 又是什么呢?它表示两种类型间的一个映射。在 ML 的交互环境中,你常常能看到它。


  1. - fn x=> x+1;
  2. > val it = fn : int -> int
复制代码


有时候需要自己输入 ->,比如


  1. datatype 'a seq = Nil | Cons of unit->'a * 'a seq;
复制代码





------------贴士的贴士----------------------------------

贴士在粤语中很常用,是个外来词,即 tips.

----------------------------------------------------------

[ 本帖最后由 win_hate 于 2008-11-9 11:13 编辑 ]
作者: win_hate    时间: 2008-11-09 11:12
看一下数学上的类似行为:

集合 A 到 B 的映射记为 A -> B

集合 A 的元素 a 映射为集合 B 的元素 b 记为 a |-> b


作者: drunkedcat    时间: 2008-11-09 12:15
晕了,呵呵。

用 haskell 时第一个符号问题是 "/=" 表示不等于,而不是“!=”,呵呵。
作者: MMMIX    时间: 2008-11-09 13:41
原帖由 drunkedcat 于 2008-11-9 12:15 发表
晕了,呵呵。

慢慢你就习惯了。

学了很多语言的一个副作用就是,许多时候会突然忘了你要用的语言的语法,然后乱写一气。。。
作者: win_hate    时间: 2008-11-09 15:46
原帖由 drunkedcat 于 2008-11-9 12:15 发表
晕了,呵呵。

用 haskell 时第一个符号问题是 "/=" 表示不等于,而不是“!=”,呵呵。


学过 C 的都觉得这里是在做除法。
作者: flw    时间: 2008-11-09 17:48
看来 FP 语言都这几条语法。
只不过用的符号各不相同,差别挺大的。

ML 里面的 => 在 Erlang 里面用 -> 来表示。
FP 里面的 -> 和 ML 是一样的。
作者: drunkedcat    时间: 2008-11-09 19:40
原帖由 MMMIX 于 2008-11-9 13:41 发表

慢慢你就习惯了。

学了很多语言的一个副作用就是,许多时候会突然忘了你要用的语言的语法,然后乱写一气。。。



就是就是。

所以语言还是不要学太多,现学现用,呵呵。
作者: MMMIX    时间: 2008-11-09 23:26
原帖由 drunkedcat 于 2008-11-9 19:40 发表

所以语言还是不要学太多,现学现用,呵呵。

多学几种类型不同的语言还是很有好处的,起码可以开阔眼界。
作者: drunkedcat    时间: 2008-11-10 10:56
原帖由 MMMIX 于 2008-11-9 23:26 发表

多学几种类型不同的语言还是很有好处的,起码可以开阔眼界。



Eric Raymond 推荐学习 html, c/c++, java, perl, lisp, 英语,呵呵,我觉得应该可以加上 haskell. 思维方式都不一样。
作者: MMMIX    时间: 2008-11-10 12:09
原帖由 drunkedcat 于 2008-11-10 10:56 发表



Eric Raymond 推荐学习 html, c/c++, java, perl, lisp, 英语,呵呵,我觉得应该可以加上 haskell. 思维方式都不一样。

每个人推荐的东西都会受到他/她自己知识背景的限制,因此参考一下就可以了,没必要太认真
作者: ychael    时间: 2008-12-05 20:35
都是 λ
作者: MMMIX    时间: 2008-12-06 22:48
原帖由 ychael 于 2008-12-5 20:35 发表
都是 λ

那有这么简单。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2