Oui
(de même que le pointeur nul est une value bien concrète, de type A*)
Oui, tout à fait !

(bref ce n'est pas le néant ou autres calembredaines mystiques).
Ah non, () ça n'a strictement rien à voir ! () ne contient aucune information, alors que None contient une information qui le différencie de Some ptr...
Les types unit, 'a list, 'a option sont des types sommes, dont l'une des alternatives est respectivement (), [] ou None. Les situations sont donc absolument similaires (si ce n'est que pour unit il n'y a pas d'autre alternative).
Enfin on pourrait aussi se débrouiller, en définissant un type Null () | NonNull ptr, hein, mais c'est idiot parce que le built-in None | Some ptr fait exactement la m^me ehcose...
Chais pas, c'est vraiment très bizarre ton histoire, t'as l'air complètement à l'ouest.
Si on voulait vraiment définir un type pointeur en caml, ça ne serait pas un type somme, mais un type abstrait, avec un petit fichier en C à côté pour faire marcher quelques fonctions de bases. Le Null serait alors une value appartenant à ce type, mais rien ne le différencierait syntaxiquement des autres.
Ah non, la liste vide, elle a une taille, on peut la manipuler, on peut lui concaténer des objets, bref, on peut la manipuler exactement comme une liste normale...
Le None, on peut le manipuler exactement comme un 'a option normal.
fun (Some x) -> x renverra une erreur sur un None, de même que fun a::q -> a renverra une erreur sur un [].
Rappel :
type 'a list =
| []
| :: of ('a*'a list)
type 'a option =
| None
| Some of 'a
[] et None jouent le même rôle. Soit dit en passant, 'a option n'est même pas un type builtin, c'est un machin de la library pervasives qu'on pourrait tout aussi bien définir à la main.
(alors que 'a list, lui, est builtin, probablement pour des raisons d'optimisation(?), son [] ferait donc un null bien plus pur que None. D'ailleurs c'est marrant : l'opérateur :: est sensé se prononcer "cons", alors que [] est sensé se prononcer "nil". Ah ah ah.)
T'es vraiment pas camélien mon pauvre yollux.
Ya pas de pointeur en caml. (à la rigueur des 'a ref)

Oui?
Allez, je le refais : ya pas de pointeur en caml.
Si tu veux définir des pointeurs, fais comme j'ai indiqué plus haut. Mais c'est sale à mon avis, le language est pas fait pour.