2006-11-02
Practical Ocaml阅读笔记1-4章
关键字: ocaml
1. 重定义类型并不会出警告?(不对吧?)
2. int是31位,Int32才是32位。
3. bytecode模式才能debug
4. 不支持运算符重载,但能定义新运算符?(确实支持运算符重载的阿?)
5. 一个函数只能返回一种类型,注意有exception的时候。
6. 递归函数应该尽量用非递归函数封装起来以免计数参数外露
7. 尾递归判断的两个条件:1.递归调用不在try/with之中,2.返回值是确定的,不含递归调用
8. 一旦被label标识为命名参数就不能在按普通参数那样调用了(没办法,否则和curry冲突)
9. pattern match的as语法竟然没有讲,用了一种很难看的方式表达。。。
10. composing function是不好的?(其实可以用来pipeline,如:)
不用的话代码就要lispy点了。。。
与F#的差别:
- F#的int是32位的
- ocaml允许递归定义无限序列:let x = 1::x;; 而F#限制这种形式
- ocaml允许定义任意类型的空数组:let a = Array.create 10 [] 而F#要明确声明类型为基本类型或函数
2. int是31位,Int32才是32位。
3. bytecode模式才能debug
4. 不支持运算符重载,但能定义新运算符?(确实支持运算符重载的阿?)
5. 一个函数只能返回一种类型,注意有exception的时候。
6. 递归函数应该尽量用非递归函数封装起来以免计数参数外露
7. 尾递归判断的两个条件:1.递归调用不在try/with之中,2.返回值是确定的,不含递归调用
8. 一旦被label标识为命名参数就不能在按普通参数那样调用了(没办法,否则和curry冲突)
9. pattern match的as语法竟然没有讲,用了一种很难看的方式表达。。。
10. composing function是不好的?(其实可以用来pipeline,如:)
let (|>) x f = f x;; [1;2;3] |> List.map (fun x -> x * x) |> List.fold_left (+) 0;;
不用的话代码就要lispy点了。。。
与F#的差别:
- F#的int是32位的
- ocaml允许递归定义无限序列:let x = 1::x;; 而F#限制这种形式
- ocaml允许定义任意类型的空数组:let a = Array.create 10 [] 而F#要明确声明类型为基本类型或函数
评论
现在只读到第7章,还早着呢。
GUI,见过一些GTK的例子(比如一个p2p程序MLDonkey, 还有点人气),我想应该足够成熟了。QT的邦定好像没有。。。另外PO是不讲GUI的,O'reilly讲,但讲的不是GTK。
Ocaml使用轻量级线程,共享内存模式。因为并行GC的困难Ocaml的leader决定永远不支持SMP,要用多CPU的话只能借助于外部的message-passing库。还有个分布式的网络通讯框架ensemble, 不过属于研究性项目。
GUI,见过一些GTK的例子(比如一个p2p程序MLDonkey, 还有点人气),我想应该足够成熟了。QT的邦定好像没有。。。另外PO是不讲GUI的,O'reilly讲,但讲的不是GTK。
Ocaml使用轻量级线程,共享内存模式。因为并行GC的困难Ocaml的leader决定永远不支持SMP,要用多CPU的话只能借助于外部的message-passing库。还有个分布式的网络通讯框架ensemble, 不过属于研究性项目。
发表评论
- 浏览: 332461 次
- 性别:

- 来自: Montreal

- 详细资料
搜索本博客
我的相册
20059805856241
共 10 张
共 10 张
最新评论
-
Darcs简介
good 3x
-- by 夜鸣猪 -
Pratical Ocaml作者采访
现在主要用F#分析数据,因为比较舒服(人懒啊)。其实也只用到很少的FP特性,Ru ...
-- by cookoo -
Pratical Ocaml作者采访
一年多了,呵呵,cookoo能说说看,学习使用OCaml的进展和体会吗?
-- by billgui -
Memory - 柿岛伸次
还不错啊。
-- by hazzy -
Memory - 柿岛伸次
我很想下这个,可就是不能下。LZ能否提供链接
-- by yeshucheng






评论排行榜