IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

Contribuez C++ Discussion :

Les lambdas de C++0x


Sujet :

Contribuez C++

  1. #1
    Alp
    Alp est d�connect�
    Expert confirm�

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 36
    Localisation : France, Bouches du Rh�ne (Provence Alpes C�te d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par d�faut Les lambdas de C++0x
    Salut tout le monde,

    Vous le savez probablement, il y aura pas mal de nouveaut�s dans C++0x (mais pas les concepts), dont une que l'on appelle les lambda expressions. Il s'agit simplement de pouvoir �crire des fonctions anonymes (le nom provient du lambda calcul).

    Voici, entre autres, un exemple de code utilisant cette nouvelle possibilit�.
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    std::find_if(employees.begin(), employees.end(),
    [&](const employee& e) { return e.salary() >= min salary && e.salary() < u limit; });
    Cela permettra de d�finir � la vol�e des fonctions afin d'�crire plus lisiblement, facilement et intuitivement des traitements sur des conteneurs standard, par exemple.

    Ceci pourrait int�resser pas mal de personnes : un petit guide sur les lambdas de C++0x.
    http://software.intel.com/en-us/blog...-lambdas-in-c/

    N'h�sitez pas � poster en enfilade d'autres liens sur le sujet.

    Bonne lecture

  2. #2
    Membre tr�s actif Avatar de metagoto
    Profil pro
    Hobbyist programmateur
    Inscrit en
    Juin 2009
    Messages
    646
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activit� : Hobbyist programmateur

    Informations forums :
    Inscription : Juin 2009
    Messages : 646
    Par d�faut
    D�sol� si cela a d�j� �t� mentionn�:
    http://blogs.msdn.com/vcblog/archive...10-part-1.aspx
    Un autre exellent article sur les lambdas

  3. #3
    Alp
    Alp est d�connect�
    Expert confirm�

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 36
    Localisation : France, Bouches du Rh�ne (Provence Alpes C�te d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par d�faut
    Quand j'aurai un peu de temps, j'essayerai d'en r�diger un, aussi complet que possible. J'attends 1/ d'avoir le temps 2/ de voir s'ils vont int�grer les poly-lambdas

    Bon Intel bassine pas mal les gens en disant que �a sera pratique pour les cr�ations de threads en une ligne, ou les parallel_for etc... mais il n'y a pas que �a. Pouvoir cr�er une fonction � la vol�e comme �a c'est bien sympa

  4. #4
    Expert �minent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activit� : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par d�faut
    Salut,
    Citation Envoy� par Alp Voir le message
    Quand j'aurai un peu de temps, j'essayerai d'en r�diger un, aussi complet que possible. J'attends 1/ d'avoir le temps 2/ de voir s'ils vont int�grer les poly-lambdas
    J'avais en t�te qu'il �tait d�j� commenc�, non

    Ou peut-�tre est-ce florian qui l'avait entam�

    Quoi qu'il en soit, il est effectivement plus int�ressant d'attendre le moment o� nous saurons effectivement de mani�re certaine ce qui sera int�gr�...

    Car, si c'est pour lancer un article maintenant et le mettre � jour dans trois mois lorsque les discussions sur le sujet seront closes (mais avant la sortie "officielle" de la norme, cela ne vaut peut �tre pas tout � fait la peine, surtout si tu es "over book�"
    A m�diter: La solution la plus simple est toujours la moins compliqu�e
    Ce qui se con�oit bien s'�nonce clairement, et les mots pour le dire vous viennent ais�ment. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 f�vrier 2014
    mon tout nouveau blog

  5. #5
    Alp
    Alp est d�connect�
    Expert confirm�

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 36
    Localisation : France, Bouches du Rh�ne (Provence Alpes C�te d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par d�faut
    Citation Envoy� par koala01 Voir le message
    Salut,J'avais en t�te qu'il �tait d�j� commenc�, non

    Ou peut-�tre est-ce florian qui l'avait entam�
    Non, rien n'a �t� entam� pour le moment sur les lambdas.

    Mais avec le report de l'int�gration des concepts (sur lesquels un article avait �t� commenc� ), �a va peut-�tre laisser de la place pour des nouvelles choses, comme les polymorphic lambdas... Et �a, �a serait top.

    Au passage, pour tous les lecteurs, voici la derni�re version de la proposition concernant les lambda expressions : http://www.open-std.org/JTC1/SC22/WG...2009/n2903.pdf

    Une version r�vis�e devrait �tre publi�e d'ici peu;

  6. #6
    Membre tr�s actif Avatar de metagoto
    Profil pro
    Hobbyist programmateur
    Inscrit en
    Juin 2009
    Messages
    646
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activit� : Hobbyist programmateur

    Informations forums :
    Inscription : Juin 2009
    Messages : 646
    Par d�faut
    Avez-vous essay� les premi�res impl�mentations des lambdas ? GCC a une branche lambda que je n'ai pas essay�.

  7. #7
    Alp
    Alp est d�connect�
    Expert confirm�

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 36
    Localisation : France, Bouches du Rh�ne (Provence Alpes C�te d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par d�faut
    Citation Envoy� par metagoto Voir le message
    Avez-vous essay� les premi�res impl�mentations des lambdas ? GCC a une branche lambda que je n'ai pas essay�.
    Pas encore pour ma part, mais �a ne saurait tarder.
    Mais j'attends avec une �norme impatience qu'ils les rendent polymorphes, comme sur boost.lambda.

  8. #8
    Membre Expert
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    D�tails du profil
    Informations personnelles :
    �ge : 35
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Par d�faut
    J'ai un article sous le coude (�crit par ma pomme hein) sur les lambda... J'attends de voir si �a bouge encore. (notamment sur les polymorphic lambda, faudra que je me forme plus).
    Pour avoir des output moi j'utilise VS 2010 b�ta.
    Pour la branch de gcc qui les supporte j'ai jamais tent� le coup.
    Par contre ouai c'est vraiment une feature bien sympas (les foncteurs c'est lourd � force).
    Par contre reste que la syntaxe est assez d�routante au d�but, et je trouve que devoir utiliser le mot clef mutable c'est assez disgracieux l�. (mais bon whatever c'est de l'ordre du d�tail).
    par contre j'aimerais pas �tre � la place des dev de compilo... avec l'utilisation de [] �a doit �tre un vrai casse t�te de s'en sortir je pense.

  9. #9
    Membre tr�s actif Avatar de metagoto
    Profil pro
    Hobbyist programmateur
    Inscrit en
    Juin 2009
    Messages
    646
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activit� : Hobbyist programmateur

    Informations forums :
    Inscription : Juin 2009
    Messages : 646
    Par d�faut
    Avant les lambda, je trouve que la feature la plus importante est l'introduction des rvalue references.

    Je ne savais pas qu'on peut se procurer VS2010. Faut que je regarde �a.

  10. #10
    Alp
    Alp est d�connect�
    Expert confirm�

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 36
    Localisation : France, Bouches du Rh�ne (Provence Alpes C�te d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par d�faut
    Oui mais avec le mattraquage de Microsoft et Intel entre autres sur leurs bouts de code qui �crivent des parallel_for ou autre avec des lambdas, ils se sont d�p�ch�s d'impl�menter �a !

    En tout cas, n'h�site pas � nous contacter si tu veux publier ton article sur Developpez, une fois qu'on sera s�r que �a bougera plus (je le r�p�te, j'ai 3/4 d'un article sur les concepts qui ... est remis � dans 5 ans peut-�tre ).

  11. #11
    Expert confirm�
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    D�cembre 2003
    Messages
    3 549
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (�le de France)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels

    Informations forums :
    Inscription : D�cembre 2003
    Messages : 3 549
    Par d�faut
    Parle aussi de leur avantage par rapport aux macros (� savoir qu'avec une macro on ne peut cr�er une fonction lambda que dans un �nonc�, pas dans une expression).

  12. #12
    Membre chevronn�

    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Juin 2007
    Messages
    373
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 36
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Sant�

    Informations forums :
    Inscription : Juin 2007
    Messages : 373
    Par d�faut
    J'entends beaucoup parler des lambdas polymorphiques, et j'ai lu quelques lignes dessus (�a devait �tre un draft), mais je n'en ai pas saisi le sens...
    Quelqu'un pourrait m'expliquer ?

  13. #13
    Membre Expert
    Avatar de Klaim
    Homme Profil pro
    D�veloppeur de jeux vid�o
    Inscrit en
    Ao�t 2004
    Messages
    1 717
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur de jeux vid�o
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 1 717
    Par d�faut
    Pareil, j'ai pas bien compris la diff�rence avec les polymorphiques, juste que Boost.Lambda (ou une autre lib qui doit �tre fusionn�e avec celle ci si j'ai bien compris) permet �a. Une explication serai bienvenue.


    Sinon j'ai fais joujou avec les lambda a la sortie de la Beta1 de VS2010, juste pour tester et pratiquer la syntaxe (que je trouve assez simple �trangement).

  14. #14
    Alp
    Alp est d�connect�
    Expert confirm�

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 36
    Localisation : France, Bouches du Rh�ne (Provence Alpes C�te d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par d�faut
    Lorsqu'on �crit des lambdas telles que d�crites dans le draft actuel, on sp�cifie tous les types de tous les arguments, etc.

    Les lambdas polymorphiques, �a permettrait de se passer de �a, et que l'on ne se base que sur les contraintes syntaxiques impos�es aux arguments de la lambda. Un peu comme avec les templates :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    template <typename T>
    void call_f(const T& t)
    {
      t.f();
    }
    Pour qu'un appel � call_f compile, il faut que le type T poss�de une fonction membre const nomm�e f et qui n'a pas d'arguments. Mais rien d'autre !

  15. #15
    Membre chevronn�

    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Juin 2007
    Messages
    373
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 36
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Sant�

    Informations forums :
    Inscription : Juin 2007
    Messages : 373
    Par d�faut
    Hum je vois. Du coup on pourrait �crire :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    auto call_f = <> (t) { t.f(); };
    ... puis ensuite appeler call_f avec n'importe quel type d'objet pour t (pourvu qu'il ait une fonction membre f).

    PS : la syntaxe provient de ce lien (page 10).

  16. #16
    Alp
    Alp est d�connect�
    Expert confirm�

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 36
    Localisation : France, Bouches du Rh�ne (Provence Alpes C�te d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par d�faut
    Citation Envoy� par Kalith Voir le message
    Hum je vois. Du coup on pourrait �crire :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    auto call_f = <> (t) { t.f(); };
    ... puis ensuite appeler call_f avec n'importe quel type d'objet pour t (pourvu qu'il ait une fonction membre f).

    PS : la syntaxe provient de ce lien (page 10).
    C'est l'id�e oui

  17. #17
    Membre tr�s actif Avatar de metagoto
    Profil pro
    Hobbyist programmateur
    Inscrit en
    Juin 2009
    Messages
    646
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activit� : Hobbyist programmateur

    Informations forums :
    Inscription : Juin 2009
    Messages : 646
    Par d�faut
    J'ai install� gcc 4.5 branche lambda. Pas mal de choses sont d�j� impl�ment�es (pour les monomorphiques), �a fait plaisir!
    Les lambda r�cursives fonctionnent. Elles doivent �tre r�f�renc�es avec un std::function car l'ex-reference_closure � disparu des proposals.
    La tests suite:
    http://gcc.gnu.org/viewcvs/branches/.../cpp0x/lambda/

  18. #18
    Expert confirm�
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    D�cembre 2003
    Messages
    3 549
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (�le de France)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels

    Informations forums :
    Inscription : D�cembre 2003
    Messages : 3 549
    Par d�faut
    std::function �a fait de la type erasure, c'est un truc ind�pendant...

Discussions similaires

  1. Java 8 - Question sur les lambdas
    Par joel.drigo dans le forum G�n�ral Java
    R�ponses: 2
    Dernier message: 24/11/2013, 19h27
  2. [D�butant] Peut on introduire une variable avec Linq et les lambda expressions?
    Par takinelinfo dans le forum C#
    R�ponses: 2
    Dernier message: 24/10/2011, 18h13
  3. Je n'arrive pas � utiliser les Lambda Expressions
    Par Tiber_le_vrai dans le forum C#
    R�ponses: 7
    Dernier message: 21/12/2009, 14h41
  4. [Lambda]Probl�mes avec les lambdas expressions
    Par sarapis dans le forum G�n�ral Dotnet
    R�ponses: 8
    Dernier message: 25/06/2008, 13h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo