Penguin
Annotated edit history of OCaml version 1, including all changes. View license author blame.
Rev Author # Line
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