• [^] # Re: Sympa ton journal

    Posté par . En réponse au journal Des vieilles bases d'unix à la hype reactive actuelle. Évalué à 2.

    Les langages avec des vraies macros , comme Collin Lisp que je cite permettent de tout programmer de façon assez agréable. Par exemple avec cl-async, on peut presque réutiliser son code synchrone avec des promises, il suffit presque de changer les let en alet;)

    Avec l'extension de syntaxe de Lwt aussi ;-).

    Dans utop, il suffit de faire :

    #require "lwt";;
    #require "lwt.ppx";;

    Pour une version avec bind, proche de la syntaxe NodeJS, où on passe la promesse à une fonction anonyme :

    let main () =
     let open Lwt in
     Lwt_io.print "Entrer votre nom: " >>= fun () ->
     Lwt_io.(read_line stdin) >>= fun nom ->
     Lwt_io.printlf "Votre nom est: %s" nom
    ;;
    val main : unit -> unit Lwt.t = <fun>
    let () = Lwt_main.run (main ());;
    Entrer votre nom: kantien
    Votre nom est: kantien

    La même, mais avec l'extension de syntaxe : on retrouve une forme proche de celle d'un code synchrone (les let x = e in sont remplacés par des let%lwt x = e in) :

    let main () =
     let%lwt () = Lwt_io.print "Entrer votre nom: " in
     let%lwt nom = Lwt_io.(read_line stdin) in
     Lwt_io.printlf "Votre nom est: %s" nom
    ;;
    val main : unit -> unit Lwt.t = <fun>
    let () = Lwt_main.run (main ());;
    Entrer votre nom: kantien
    Votre nom est: kantien

    Il y a une forme (à base de %lwt à rajouter) pour presque toutes les constructions syntaxiques du langage.

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