• [^] # Re: Un peu faible

    Posté par (site web personnel) . En réponse au journal Les types fantômes. Évalué à 2. Dernière modification le 03 septembre 2012 à 12:07.

    J'ai essayé

    module Foo : sig
     type 'a foo
     val inject : 'a -> 'a foo
    end = struct
     type 'a foo = 'a
     let inject x = x
    end
    
    
    module Foo : sig
     type +'a foo
     val inject : 'a -> 'a foo
    end = struct
     type 'a foo = 'a
     let inject x = x
    end
    
    

    Et les deux versions se comportent exactement de la même façon, ne restreignent rien

     Foo.inject [];;
    - : 'a list Foo.foo = <abstr> 
    
    
     Foo.inject 6;;
    - : int Foo.foo = <abstr> 
    
    

    Je suppose que c'est normal ?

    « Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker