• [^] # Re: Jai: Language for game programmming

    Posté par . En réponse à la dépêche C++17, Genèse d’une version mineure. Évalué à 0.

    Petite précision pour illustrer qu'une fois le système des modular implicits définitivement mis au point et stabilisé, cela ne demandera pas de grands changements dans la base de code existante.

    Pour rappel, on peut déjà écrire :

    module type Num = sig
     type t
     val add: t -> t -> t
     val mul: t -> t -> t
    end;;
    module type Num = sig type t val add : t -> t -> t val mul : t -> t -> t end
    let add (type a) (module M:Num with type t = a) i j = M.add i j;;
    val add : (module Num with type t = 'a) -> 'a -> 'a -> 'a = <fun>

    Avec les modules de première classe, on a déjà un polymorphisme élargi mais le module doit être donné explicitement. Les modules Int32 et Int64 correspondent à cette interface, même s'ils définissent plus de choses : il n'est pas nécessaire de se restreindre aux seuls éléments d'une interface pour la satisfaire, il suffit qu'ils y soient. D'où :

    add (module Int32) 21l 21l;;
    - : int32 = 42l
    add (module Int64) 21L 21L;;
    - : int64 = 42L

    Sapere aude ! Aie le courage de te servir de ton propre entendement. Voilà la devise des Lumières.