• # pour implémenter : enrober dans une fonction

    Posté par . En réponse au journal Haskell -- Évaluation paresseuse. Évalué à 9.

    Le problème pour implémenter l'évaluation paresseuse, c'est ... l'évaluation immédiate, plus exactement des paramètres quand on évalue une fonction/méthode.

    C'est possible de circonvenir la chose en enrobant une valeur dans une fonction.
    Cela suppose la possibilité d'utiliser une fonction comme un paramètre d'une autre fonction, ce qui commence à se généraliser dans pas mal de langage.

    On appelle cela un thunk
    Exemple en javascript :

    // let a=..., let b=...
    function thunk_a(){return a}
    function thunk_b(){return b}
    function myAnd(a,b) { // a and b are thunks
     let valA = a()
     if valA then
     return valA
     else
     return b()
    }

    C'est moche et lourdingue, mais ça fait ce qui était demandé.

    La même chose en bien mieux, par Larry Wall : Laziness is a virtue

    Soyez des feignasses !