OCaml语言编程基础教程思维导图

简介: OCaml语言是一种函数式程序设计语言。本书重点介绍函数式编程的基础知识以及OCaml程序设计的技巧,同时兼顾应用软件开发的需求。全书共8章,前5章讲解OCaml语言的函数式控制结构、数据结构、模块化程序设计、命令式程序设计和图形程序设计;第6章介绍如何把OCaml移植到F#,第7章介绍通过C#开发的用户界面调用OCaml或F#程序,第8章介绍面向对象程序设计。本书适合想要学习OCaml程序语言或

OCaml支持函数式、命令式以及面向对象程序设计。但是它的主要特点是支持函数式程序设计。

在函数式程序设计提出了“纯函数”的概念指的是只做输入输出变换,没有副作用的函数。为了说明这一概念,我们先来看两个C函数的例子,第一个:

int f (int a) { return (a+1); }

这个函数的输入值是一个整数a,输出值是a+1。这个函数实现了输入a到输出a+1的变换,除此之外没有其他功能。所以,这个函数是“函数式程序设计”意义上的函数。再看第二个例子:

int g (int a) { b = a; return (a+1); }

这个函数同样把输入的整数a加一之后输出。但是,它还对一个全局变量b进行了赋值,这个操作就称为函数的副作用。因此,g就不是纯函数式程序设计意义下的函数。

函数式程序设计风格的一个重要优点是提高了程序的可靠性和可理解性。它的一个缺点是有时会降低程序的执行效率。

函数式语言的基本控制结构主要有函数定义和函数调用。

核心OCaml程序主要由let定义(definition)和表达式(expression)组成。和C语言相比,OCaml的核心部分严格地说没有“语句”概念。OCaml表达式既起到C语言中表达式的作用,又起到语句的作用。OCaml中的定义类似于C语言中变量声明和函数定义的结合体,它本质上是把一个名字和一个表达式相关联。

表达式的特点就是能够通过计算得到一个值(value)。值是无法继续计算的表达式,函数也是一种值。值都有类型,因此表达式都有类型。OCaml的let定义把变量声明、变量初始化和函数定义等概念整合在一起。本章主要讲OCaml中的表达式以及基本的let定义。表达式和let定义是OCaml解释器能够执行的基本单元。

C语言是基于编译器的语言,而OCaml是基于解释器的语言。对于一个基于编译器的语言,必须写出一个完整的程序才能编译执行。而对于一个基于解释器的语言,程序可以划分为一组可独立执行的代码,解释器可对这组代码顺序执行。基本的OCaml程序由一组定义和一组表达式构成,这些定义和表达式可以在OCaml解释器中按顺序单独执行。OCaml程序也可以编译执行,实用的OCaml应用开发都需要编译。在学习OCaml的时候,我们首先从解释执行开始。程序的解释执行使得语言的学习更为方便。在OCaml解释器中执行OCaml定义和表达式的过程称为交互式会话(interactive session)。

OCaml是一个免费的软件,可以从ocaml.org上下载。在安装了OCaml软件的Linux或Cygwin中,可以通过OCaml命令启动OCaml解释器。在Windows平台上,过去有一个OCamlWin窗口程序,可以在窗口界面中运行OCaml解释器。近几年OCaml的发布方式经常有变化,带窗口界面的OCaml软件不太容易找到。OCaml官方下载页面上现在可以看到三种Window平台下的OCaml安装方案,推荐使用最后一个,即下载OCaml64.exe程序,该程序执行之后会创建一个目录,缺省情况下的目录名是C:\OCaml64,其中包含一个cygwin工作环境。通过在桌面上新创建的OCaml64图标可以启动这个工作环境,它是一个类似linux终端的命令行操作界面。在这个界面中可以执行linux命令,并且可以执行一个opam程序,它是一个用于安装OCaml及相关软件的专用工具。执行opam init将对这个工具做初始化,同时下载并安装最新的OCaml软件。安装完毕之后,可以键入ocaml命令启动OCaml解释系统,如图1-1所示:

图1-1

解释执行OCaml比较好的方式是在XEmacs中安装Tuareg模式,这样不仅可以得到一个支持OCaml编辑的XEmacs模式,而且可以在编辑器中直接运行OCaml解释器。如果没有在本地机器中安装OCaml软件,也可以在网上直接使用在线的OCaml解释器。网站http://try.ocamlpro.com/上不仅提供了可执行OCaml的在线解释器Try OCaml,而且还提供了一些教学材料。

版权:人民邮电出版社