• [^] # Re: Dépêche actuelle et la suite

    Posté par . En réponse à la dépêche Les coulisses du standard C++. Évalué à 2. Dernière modification le 27 août 2016 à 22:26.

    En évitant la définition d'un opérateur ad-hoc qui rend, amha, la compréhension de la sémantique plus ardue. C'est un peu l'éternel débat des macros, quelles soient basiques comme en C ou puissante comme en LISP, ce qu'on gagne en lisibilité avec le sucre syntaxique, on le perd en compréhension de la sémantique...

    Donc bref, voici ma solution simple et lisible :p

    # let times n = fun f -> for i = 1 to n do f () done;;
    val times : int -> (unit -> 'a) -> unit = <fun>
    # (10 |> times) (fun _ -> print_endline "coin ! coin !");; 
    coin ! coin !
    coin ! coin !
    coin ! coin !
    coin ! coin !
    coin ! coin !
    coin ! coin !
    coin ! coin !
    coin ! coin !
    coin ! coin !
    coin ! coin !
    - : unit = ()

    Voire encore:

    # let times n = fun f a -> for i = 1 to n do f a done;; 
    val times : int -> ('a -> 'b) -> 'a -> unit = <fun>
    # (10 |> times) print_endline "coin ! coin !";;
    coin ! coin !
    coin ! coin !
    coin ! coin !
    coin ! coin !
    coin ! coin !
    coin ! coin !
    coin ! coin !
    coin ! coin !
    coin ! coin !
    coin ! coin !
    - : unit = ()
    #