On peut accéder à n'importe quel élément d'une chaîne de caractères via
.[], que ce soit en OCaml ou Caml Light.
Les principales différences sont :
- le type
'a array de OCaml pour les vecteurs est
'a vect en Caml Light
- il est impossible de déclarer une valeur commençant par une majuscule en OCaml ; les identificateurs commençant par une majuscule sont strictement réservés pour les constructeurs de type et les noms de modules, contrairement à Caml Light.
1 2 3 4 5 6 7 8 9 10 11
|
(* OCaml *)
type 'a tree =
| Node of 'a tree * 'a * 'a tree (* à ne pas confondre avec Node of ('a tree * 'a * 'a tree) *)
| Leaf
(* Caml Light ; possible, mais à éviter ! *)
type 'a tree =
| node of 'a tree * 'a * 'a tree (* à ne pas confondre avec node of ('a tree * 'a * 'a tree) *)
| Leaf
;; |
- les phrases Caml Light se terminent
toujours par
;;, contrairement à OCaml où on peut omettre (et c'est préférable) le
;;, sauf dans l'interprète (c'est pour lui dire jusqu'où interprèter).
- les constructeurs Caml Light peuvent s'utiliser comme des fonctions...
1 2 3
|
val node : 'a tree -> 'a -> 'a tree -> 'a tree
;; |
- il existe le mot-clef
where en Caml Light, qui est un
let ... = ... in ... inversé, inexistant en OCaml.
- Très important : les caractères s'écrivent comme ça 'c' en OCaml et comme ceci `c` en Caml Light.
- Les fonctions de la librairie standard sont complètement différentes. En Caml Light, elles sont toutes regroupées dans la même entité (voir la doc de Caml Light) et il y en a très très peu ; en OCaml, elles sont regroupées par modules : List (List.head, List.length, etc...), String (String.length, String.append, etc...), Array, etc... (voir la doc de OCaml).
- Les noms de module en Caml Light correspondent au nom du fichier et s'utilisent avec le double underscore, comme dans graphe__create, tree__height, etc... alors qu'en OCaml on aurait Graphe.create, Tree.height, etc...
- Les alias de type requièrent l'utilisation de
== en Caml Light.
1 2 3 4 5 6 7
|
(* OCaml *)
type color = int
(* Caml Light *)
type color == int
;; |
Voilà, à ces petites différences près, tout code Caml Light devrait compiler sans problèmes avec OCaml.
Partager