• [^] # Re: typage mou

    Posté par (site web personnel) . En réponse à la dépêche Quelques nouvelles de Go, le langage de programmation. Évalué à 4.

    Dire qu'il y a des monades en Haskell, mais pas en OCaml, c'est un peu comme dire qu'il y a des design pattern en C++ mais pas en Java...

    let concatMap f x = List.fold_left (@) [] (List.map f x);;
    let return x = [x];;
    let (>>=) v f = concatMap f v;;
    let (>>) v f = let _ = concatMap f v in [];;

    let test () =
    [0;1;2;3;4;5] >>=
    (fun x -> ["A";"B";"C";"D";"E"] >>=
    (fun y -> return (x,y)));;


    Et voila le travail.

    Les monades, quand on code, c'est rien d'autre qu'une interface...
    Et vu qu'OCaml a une couche objet, j'imagine qu'on peut même coder ça proprement, avec l'inférence de type qui se charge d'appeler les méthodes ">>=", ">>" et "return" correspondant à l'usage précis dans le code.