• [^] # Re: Block ou closure ?

    Posté par (site web personnel) . En réponse au journal Où l'on en apprend un peu plus sur Java 7. Évalué à 2.

    L'intérêt des closures en ruby/smalltalk/etc... est qu'on peut créer ses propre structures de controle.
    Dans la lib Lisaac, je me suis par exemple amusé à créer des foreach until, foreach while, foreach only if, bref des structures de controles sur toute sorte d'objet qui peuvent être vraiment utiles dans plein de cas.
    Tu me diras que ça ne sert à rien parce que ton cerveau est conformé à la programmation avec des langages style C. Si tu prend ton pied avec ça, c'est très bien, j'aimerai des fois être comme toi, savoir me contenter et être heureux, voires prendre mon pied dans ces limites... mais après avoir pris une énorme claque de ma vie avec le caml à 20 ans (à l'époque je connaissais dans l'ordre Basic, Pascal, C), maintenant ça me frustre...

    Depuis que j'ai vu ça :
    http://caml.inria.fr/about/taste.fr.html

    On peut définir des fonctions anonymes à l'aide de la construction function :

    sigma (function x -> x * x) [1; 2; 3];;
    - : int = 14

    Polymorphisme et fonctions d'ordre supérieur permettent de définir la composition de fonctions sous sa forme la plus générale :

    let compose f g = function x -> f (g x);;
    val compose : ('a -> 'b) -> ('c -> 'a) -> 'c -> 'b =
    let square_o_fact = compose square fact;;
    val square_o_fact : int -> int =
    square_o_fact 5;;
    - : int = 14400


    Si t'as pris l'habitude de penser comme ça, et que ça te gonfle de revenir à des trucs porky ou faut planquer ta fonction dans une classe que tu créée à la volée ou des horreurs de ce genre, tu as besoin des closures. Si t'as jamais connu, ou que les fonctions de fonctions de fonctions te font pas triper, etc... bah passes ton chemin, et soit heureux avec ta façon de coder, c'est le principal !
    Chacun ses gout :-)

    « Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker