• [^] # Re: Module et type abstrait

    Posté par . En réponse au journal Une petite histoire d'utilisation type fort dans Ocaml. Évalué à 3.

    Ta solution, bien que résolvant ta problématique, rajoute une indirection en mémoire.

    Je pense qu'il est souvent prématuré de se poser des questions de représentation mémoire quand on écrit un programme—à moins de savoir d'avance que le type sera impliqué dans les parties les plus coûteuses en performance.

    Par ailleurs, comme Permhmâd l'a mentionné, un constructeur à plusieurs argument

    type t = Foo of bar * baz * foobar
    a la même représentation qu'un type (bar * baz * foobar). Du coup on a une indirection seulement avec un constructeur à un seul argument

    type t = Foo of bar
    et depuis OCaml 4.04 (Novembre 2016), on peut écrire

    type t = Foo of bar [@@unboxed]
    pour supprimer l'indirection dans ce cas. (C'est utile pour packer des existentiels sans indirection.)