[...] il suffit de refaire une closure à la main même si ça doit être un peu plus lourd en syntaxe [...]
Oui c'est tout à fait possible et comme tu peux utiliser des références de méthodes ça n'est pas forcément particulièrement lourd. Au niveau de la syntaxe une lambda c'est (params) -> { body }
Donc je dis "écrire une closure à la main par dessus le lambda pour pouvoir curryfier ça peut-être un peu lourd" et tu me réponds "la syntaxe de base du lambda n'est pas lourde", t'as pas l'impression qu'on parle pas de la même chose ?
Cela dit mon propos n'était pas une critique, juste je disais que c'était possible de curryfier en Java.
où les paramètres n'ont pas forcément de type explicite
Oui, le compilateur C++ sait les déduire aussi.
Et on peut même définir un lambda générique genre:
auto multiplier_par_deux = [](auto x) { return 2*x; }
Sans être obliger de déclarer une interface avec un generic autour de java.util.Function. Suivez mon regard.
Pour ce qui est du fonctionnellement moins riches, le fait que ça se base sur des interfaces et que les interfaces peuvent avoir des méthodes permet des choses qui ne sont pas directement accessible en C++ comme le fait java.util.Function avec la composition par exemple
C'est pas un exemple c'est le seul argument.
C'est un lot de consolation pour toutes les limitations de java.util.Function, notamment celui que je décris juste au-dessus.
Mais ça ne doit pas interdire de faire du java ni d'en utiliser les lambdas !
[^] # Re: Jai: Language for game programmming
Posté par DerekSagan . En réponse à la dépêche C++17, Genèse d’une version mineure. Évalué à 0.
Tout à fait, un exemple typique de prétérition.
Donc je dis "écrire une closure à la main par dessus le lambda pour pouvoir curryfier ça peut-être un peu lourd" et tu me réponds "la syntaxe de base du lambda n'est pas lourde", t'as pas l'impression qu'on parle pas de la même chose ?
Cela dit mon propos n'était pas une critique, juste je disais que c'était possible de curryfier en Java.
Oui, le compilateur C++ sait les déduire aussi.
Et on peut même définir un lambda générique genre:
auto multiplier_par_deux = [](auto x) { return 2*x; }
Sans être obliger de déclarer une interface avec un generic autour de java.util.Function. Suivez mon regard.
C'est pas un exemple c'est le seul argument.
C'est un lot de consolation pour toutes les limitations de java.util.Function, notamment celui que je décris juste au-dessus.
Mais ça ne doit pas interdire de faire du java ni d'en utiliser les lambdas !