1 |
AristotlePagaltzis |
1 |
[OCaml | http://www.ocaml.org] (Objective Caml) is a functional ProgrammingLanguage that's easy to learn and use yet amazingly powerful. It is a dialect of [ML] and features a powerful modules system, full support of ObjectOrientation, and an optimizing [Compiler]. |
|
|
2 |
|
|
|
3 |
!! The [OCaml] implementation |
|
|
4 |
|
|
|
5 |
There is a single OpenSource implementation of [OCaml] developed by INRIA (the main French research institute for computer science). A large community of users who don't want their code broken pressure the Ocaml development team to keep new versions standard or backwards compatible. [Python] and [Perl] are developed the same way. This approach works well once the community user is large enough. Ocaml's user community has been the necessary size for many years. |
|
|
6 |
|
|
|
7 |
(An interpreter for the older [Caml Light | http://caml.inria.fr/overview-caml-light-eng.html] language is still available because it can be made to work on small computers, e.g. 286 PCs. It is a subset of Objective Caml, so there is little other reason to use it.) |
|
|
8 |
|
|
|
9 |
!! ObjectOrientation |
|
|
10 |
|
|
|
11 |
One of [OCaml]'s extensions to the original [ML] language is ObjectOrientation. [OCaml]'s [OOP] has everything you'd expect after using [Java] or [C++]. The syntax is quite different -- class declarations are much more compact. |
|
|
12 |
|
|
|
13 |
PolymorphicTypes are a big improvement for container classes. In [C++] and [Java] container objects only recognise objects inside themselves as being members of the __Object__ class. You have to cast objects back the appropriate class when you remove them from the container. In [OCaml], if you want a container object to specifically contain objects that are of the class __fruitbat__, you can say so. |
|
|
14 |
|
|
|
15 |
See [Objects in Caml | http://pauillac.inria.fr/ocaml/htmlman/manual005.html] |
|
|
16 |
|
|
|
17 |
!! The [OCaml] Library |
|
|
18 |
|
|
|
19 |
[OCaml]'s library is divided into: |
|
|
20 |
|
|
|
21 |
* a [core library |http://caml.inria.fr/ocaml/htmlman/manual033.html], types and function available at all times |
|
|
22 |
* an implementation independent [standard library | http://caml.inria.fr/ocaml/htmlman/manual034.html], modules that can be imported |
|
|
23 |
* a set of [optional libraries | http://caml.inria.fr/ocaml/htmlman/index.html#p:library] that are either implementation dependent or special purpose |
|
|
24 |
|
|
|
25 |
The <tt>str</tt> RegularExpression library that comes with [OCaml] is rather clumsy. I recommend the [PCRE | http://www.ai.univie.ac.at/~markus/home/ocaml_sources.html] library instead. |
|
|
26 |
|
|
|
27 |
!! See also |
|
|
28 |
|
|
|
29 |
* [The Caml language | http://caml.inria.fr/] |
|
|
30 |
* [Developing Applications With Objective Caml | http://caml.inria.fr/oreilly-book/] by O'Reilly |
|
|
31 |
* [Software in OCaml | http://www.npc.de/ocaml/linkdb/] |
|
|
32 |
* [An OCaml tutorial | http://www.merjis.com/developers/ocaml_tutorial] |
|
|
33 |
* [The Caml Link Database | http://www.npc.de/ocaml/linkdb/] |
|
|
34 |
* [The Hump | http://caml.inria.fr/humps/index.html] |
|
|
35 |
|
|
|
36 |
----- |
|
|
37 |
CategoryProgrammingLanguages, CategoryFunctionalProgrammingLanguages |