当前位置:首页 > 开发 > 编程语言 > 编程 > 正文

Practical Ocaml阅读笔记1-4章

发表于: 2006-11-02   作者:cookoo   来源:转载   浏览:
摘要: 1. 重定义类型并不会出警告?(不对吧?) 2. int是31位,Int32才是32位。 3. bytecode模式才能debug 4. 不支持运算符重载,但能定义新运算符?(确实支持运算符重载的阿?) 5. 一个函数只能返回一种类型,注意有exception的时候。 6. 递归函数应该尽量用非递归函数封装起来以免计数参数外露 7. 尾递归判断的两个条件:1.递
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,如:)
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#要明确声明类型为基本类型或函数


Practical Ocaml阅读笔记1-4章

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号