• [^] # Re: langage fonctionnel

    Posté par (site web personnel) . En réponse au journal Ada, langage et ressources. Évalué à 4. Dernière modification le 24 juin 2013 à 16:53.

    L'exemple typique définit un arbre, il faut en gros que ta donné soit un poil complexe. Le genre de truc qui te prend un paquet de fichier en java, mais 10 lignes en ocaml. Par exemple, un moyen d'exprimer un paquet de donné binaire :

    type val_t =
     | I32 of Int64.t 
     | U32 of Int64.t 
     | I16 of int 
     | U16 of int 
     | U8 of int
     | Comment 
     | Padding of int 
     let get_size val =
     match val with
     | I32 _ -> 4
     | U32 _ -> 4
     | I16 _ -> 2
     | U16 _ -> 2
     | U8 _ -> 1
     | Comment -> 0
     | Padding i -> i
     let is_correct val = 
     match val with
     | I32(i) -> (Int64.compare (-2147483648L) i) <= 0) && ((Int64.compare i 2147483647L) <= 0
     | U32(u) -> (Int64.compare 0L u) <= 0) && ((Int64.compare u 4294967295L) <= 0
     | I16(i) -> (-32768 <= i) && (i <= 32767) 
     | U16(u) -> (0 <= u) && (u <= 65535)
     | U8(u) -> (0 <= u) && (u <=255)
     | Padding(i) -> 0 <= i
    
    

    type mon_gros_tableau_binaire = (val_t * string) list; (*ici la string est un commentaire pour savoir d'ou vient la donné en question*)

    "La première sécurité est la liberté"