1 / 9

OCaml

OCaml. 如果编程语言是一辆车. OCaml 是一部非常性感的欧版车。它没有 C 车那样快,但它从来不出故障,所以,最终还是它用了最短的时间到达目的地。然而,因为它是法式的,没有一个控制杆 / 按钮是安放在通常的位置上的。. OCaml 是. Objective Caml 是 Caml 的主要实现。 函数型编程语言强调函数的计算比指令的执行重要。和过程化编程相比,函数式编程里,函数的计算可随时调用。 函数型编程语言的特点: 1. 闭包和高阶函数,函数可作为其他函数的输入。 2. 惰性计算,表达式在需要用到值时进行运算,而不是绑定时。 3. 递归。

Download Presentation

OCaml

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. OCaml

  2. 如果编程语言是一辆车 OCaml是一部非常性感的欧版车。它没有C车那样快,但它从来不出故障,所以,最终还是它用了最短的时间到达目的地。然而,因为它是法式的,没有一个控制杆/按钮是安放在通常的位置上的。

  3. OCaml是... • Objective Caml是Caml的主要实现。 • 函数型编程语言强调函数的计算比指令的执行重要。和过程化编程相比,函数式编程里,函数的计算可随时调用。 • 函数型编程语言的特点: • 1.闭包和高阶函数,函数可作为其他函数的输入。 • 2.惰性计算,表达式在需要用到值时进行运算,而不是绑定时。 • 3.递归。 • 4.引用透明性,表达式的值不依赖于可以改变值的全局状态。 • 5.木有副作用,不包含赋值语句,调用函数只会计算出结果,不会出现其他效果。

  4. OCaml是... • 一种ML,MetaLanguage。 • 函数型语言。 • 静态强类型语言,严格的类型规定。 • 如何严格?(它没有C车那样快,但它从来不出故障。) • 2 + 2.5?不同类型间的运算是不被允许的 (float_of_int 2) +. 2.5 • 2.0 + 2.5?不允许操作符重载 2.0 +. 2.5 类似的*. /. -. • 如此,在进行函数声明无需进行类型声明,类型会被自动推出。 • 隐式的类型转换所造成的错误很难被发现,会花很多时间来计算在哪里要发生隐式转换。

  5. 定义函数 • 那么作为函数型语言,OCaml是如何定义函数的呢? • 1.相加 • let sum a b = a + b;; • 2.平均数 • let average a b = (a +. b) /. 2.0;; • 3.平均数 • let average a b = (a +. b) /. 2.0;;

  6. go on • 4.函数嵌套 • let sumofsquare x y = let sqx = x * x in let sqy = y * y in sqx + sqy;; • 5.递归函数 • let rec fact x = if x > 1 then x * (fact (x-1)) else 1;;

  7. Hello World • let PL2014 = print_endline "Hello world!";;

  8. 函数调用 • 假设有一个函数strrepeat输入两个参数,分别为字符串str和整型a,来重复字符串a遍。 • strrepeat "PL" 2014 • 不同于C,没有括号包含参数,也没有逗号分隔参数。(*然而,因为它是法式的,没有一个控制杆/按钮是安放在通常的位置上的。*) • 那么strrepeat ("PL",2014)又是什么意思呢? • 给strrepeat传一个参数,这个参数是一个pair。

  9. 更多 • 1.引用 let a = ref 10;; • 2.无参数函数 let a () = 1 + 1;; • 3.if then else 与C基本一样 • 4.match with • let rec sum n = match n with 0 -> 0 | x -> (x + sum (x-1));; | 表示其他情况 • 5.for i = 0 to n do ...... done

More Related