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

    Posté par . En réponse à la dépêche Les coulisses du standard C++. Évalué à 1.

    Si je reprends tes exemple, je n'aimes pas que le verbe soit paramètré par un adverbe, Je préfèrerais que l'adverbe soit paramètré par le verbe et retourne un nouveau verbe, dans la plus simple tradition de la composition de fonctions, lambda power ;-).

    C'est exactement ce que j'ai fait, c'est d'ailleurs pour cela que j'ai rajouté un nouvel alias de type pour illustrer la nature fonctionnelle d'un adverbe :

    type 'a adverbe = 'a action -> 'a action
    val fois : int -> 'a adverbe = <fun>

    Le code de ma fonction fois est identique au tien, j'ai simplement rajouté des annotations de types et changer le nom des arguments pour souligner l'analogie avec la grammaire française. Ensuite j'ai défini deux fonctions — que j'ai certes improprement qualifier de verbes — pour illustrer deux morphologies possible de la langue française, que l'on retrouve également en anglais par exemple. Sinon, on peut tout à fait écrire le même code que toi à l'usage, en respectant la syntaxe d'application des fonctions du lambda-calcul ou en ayant recours à l'opérateur infixe |> pour inverser le nom de la fonction et de son argument (à la manière du pipe du shell) :

    (fois 5) print_endline "coin ! coin !";;
    coin ! coin !
    coin ! coin !
    coin ! coin !
    coin ! coin !
    coin ! coin !
    (5 |> fois) print_endline "coin ! coin !";;
    coin ! coin !
    coin ! coin !
    coin ! coin !
    coin ! coin !
    coin ! coin !
    (print_endline |> (5 |> fois)) "coin ! coin !";;
    coin ! coin !
    coin ! coin !
    coin ! coin !
    coin ! coin !
    coin ! coin !

    PS2: je me dis parfois qu'un opérateur '$' à la haskell serait agréable à utiliser...

    Il existe en OCaml, c'est le double arobase @@ :

    (fois 5) print_endline @@ (^) "coin ! " "coin !";;
    coin ! coin !
    coin ! coin !
    coin ! coin !
    coin ! coin !
    coin ! coin !

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