Les tableaux OCaml sont mutables. Pour la plupart des types mutables, même une valeur "vide" n'a pas de type polymorphe.
Par exemple,
# ref None;;
- : '_a option ref = {contents = None}
# Hashtbl.create 0;;
- : ('_a, '_b) Hashtbl.t = <abstr>
Cependant, un tableau vide a un type polymorphe
# [||];;
- : 'a array = [||]
Il semble que cela devrait être impossible puisque les tableaux sont mutables.
Il se trouve que cela fonctionne dans ce cas parce que la longueur d'un tableau ne peut pas changer et qu'il n'y a donc aucune possibilité de rompre la solidité.
Les tableaux font-ils l'objet d'un traitement spécial dans le système de types pour permettre cela ?