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

Scheme Discussion :

Lambda : fonctionnement ?


Sujet :

Scheme

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2005
    Messages : 65
    Points : 37
    Points
    37
    Par défaut Lambda : fonctionnement ?
    Bonjour,
    Je comprend pas très bien le fonctionnement de Lambda.
    Dans un exercice classique j'arrive a l'utiliser:
    ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    (define MaFonction
             (lambda (x)
                    (if (= x 0)
                         ...
    D'après ce que je comprend. La fonction lambda s'écrit selon:
    (lambda (arguments) (corps de la fonction))

    C'est bien ca?

    Le problème c'est que pour l'évaluation, le prof donne des exercices a réaliser mais aussi des des bouts de codes Scheme à évaluer.
    En général, j'arrive a trouver le résultat...mais pour els lambda ca calle
    Genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ((lambda (x) 'x) 
       ((lambda (x y) (cons x y)) '(1 2) '(3 4)))
    --> x

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ((lambda (a b c) (a b c))
       (lambda (x y) (+ 3 x y))
       ((lambda (x y) (* x Y)) (+ 2 5) 7)
       ((lambda (z) (+ 5 z)) 0))
    -->57

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    (define f
        ((lambda (x y) (x y)) 
         (lambda (x) x) 
         (lambda (y) y)))
    (f 0)?
    --> 0

    Evidemment à l'évaluation, il y aura pas d'ordi...et encore moins de DrScheme pour me souffler les réponses

    Questions: Pouvez vous m'expliquer comment fonctionne la fonction lambda? et surtout comment fonctionne plusieurs fonctions lambda l'une de dans l'autre ?

    Merci

  2. #2
    Inactif  
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 958
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 958
    Points : 2 467
    Points
    2 467
    Par défaut
    Citation Envoyé par loic911 Voir le message
    Bonjour,
    Je comprend pas très bien le fonctionnement de Lambda.
    Dans un exercice classique j'arrive a l'utiliser:
    ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    (define MaFonction
             (lambda (x)
                    (if (= x 0)
                         ...
    D'après ce que je comprend. La fonction lambda s'écrit selon:
    (lambda (arguments) (corps de la fonction))
    C'est bien ca?
    Oui. Mais là c'est la syntaxe pour créer l'abstraction. L'abstraction crée une fermeture — c'est-à-dire une fonction avec un environnement d'évaluation. Il te manque donc la syntaxe de l'application de ta fonction qui est aussi importante car elle déclenche l'évaluation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    (fermeture expression)
    Citation Envoyé par loic911 Voir le message
    Le problème c'est que pour l'évaluation, le prof donne des exercices a réaliser mais aussi des des bouts de codes Scheme à évaluer.
    [...]
    Questions: Pouvez vous m'expliquer comment fonctionne la fonction lambda? et surtout comment fonctionne plusieurs fonctions lambda l'une de dans l'autre ?
    Et il t'a certainement donné des règles pour l'évaluation.

    Donc donnes les nous d'abord pour montrer que tu es allé chercher dans ton cours en premier lieu. Après on verra quel mécanisme tu n'as pas compris dans l'évaluation. Cependant, c'est extrêmement simple car c'est une évaluation « mathématique » si tu veux.

    Si tu appliques les quelques règles qu'il a donné, ça devient purement mécanique et c'est très facile.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2005
    Messages : 65
    Points : 37
    Points
    37
    Par défaut
    Citation Envoyé par Garulfo Voir le message
    Donc donnes les nous d'abord pour montrer que tu es allé chercher dans ton cours en premier lieu. Après on verra quel mécanisme tu n'as pas compris dans l'évaluation. Cependant, c'est extrêmement simple car c'est une évaluation « mathématique » si tu veux.

    Si tu appliques les quelques règles qu'il a donné, ça devient purement mécanique et c'est très facile.
    J'avais été voir dans le cours mais c'est une dizaine de page d'explication assez matheuse. C'est pour ça que je cherchais une explication plus pratique sur le web ou ici.
    Enfin je vais me replonger dedans, ça finira bien par faire le déclic

  4. #4
    Inactif  
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 958
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 958
    Points : 2 467
    Points
    2 467
    Par défaut
    Citation Envoyé par loic911 Voir le message
    J'avais été voir dans le cours mais c'est une dizaine de page d'explication assez matheuse. C'est pour ça que je cherchais une explication plus pratique sur le web ou ici.
    Enfin je vais me replonger dedans, ça finira bien par faire le déclic
    Malheureusement pour toi, c'est ça le principe de l'évaluation (ordre applicatif ou naturel). C'est un point fort de la programmation fonctionnelle d'avoir un modèle d'évaluation très clair et bien mathématisé (un informaticien dira formel — ça fait plus technique ). La programmation orientée-object n'avait pas un tel modèle jusqu'à très récemment.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    429
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 429
    Points : 475
    Points
    475
    Par défaut
    Bonjour,

    Une petite pour aider à démarrer...

    Prenons le 2nd énoncé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ((lambda (a b c) (a b c))
       (lambda (x y) (+ 3 x y))
       ((lambda (x y) (* x Y)) (+ 2 5) 7)
       ((lambda (z) (+ 5 z)) 0))
    Il s'agit d'appliquer la fonction f = (lambda (a b c) (a b c)) prenant trois arguments a, b, c aux trois arguments :
    (i) (lambda (x y) (+ 3 x y))
    (ii) ((lambda (x y) (* x Y)) (+ 2 5) 7)
    (iii) ((lambda (z) (+ 5 z)) 0)

    L'argument (ii) se comprend bien : on y applique la fonction "multiplier par" à 7 et 7 : on obtient 49.

    L'argument (iii) se comprend également : on applique la fonction "ajoute 5" à 0 : on obtient 5.

    L'argument (i) est une fonction qui prend deux nombres, et rend leur somme, à laquelle a été ajouté 3.

    Que fait maintenant notre fonction f ?
    Elle applique la fonction "a" aux arguments "b" et "c".
    En d'autres termes, elle applique la fonction (i) aux arguments (ii) et (iii).
    Elle va donc rendre 49 + 5 + 3 = 57

    Sauf erreur.

    Cordialement,

    Nicolas

  6. #6
    Inactif  
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 958
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 958
    Points : 2 467
    Points
    2 467
    Par défaut
    Citation Envoyé par Nicolas_75 Voir le message
    Bonjour,

    Une petite pour aider à démarrer...[...]

    Nicolas
    Tu sais que tu es un peu en retard
    Mais il doit avoir un algorithme qui lui permet de le faire méthodiquement.
    Pas de problème donc s'il suit la procédure d'évaluation.
    Il pourra s'essayer sur l'exemple après c'est vrai.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Java 8 lambda, une égalité d'Integer ne fonctionne pas
    Par Reisors dans le forum Général Java
    Réponses: 10
    Dernier message: 21/02/2015, 19h31
  2. Faire fonctionner les Lambdas
    Par hyrulia dans le forum Android
    Réponses: 0
    Dernier message: 28/03/2014, 10h58
  3. [Turbo Pascal] TP7 fonctionne en QWERTY
    Par callahan dans le forum Turbo Pascal
    Réponses: 9
    Dernier message: 08/02/2003, 21h49
  4. Prb de fonctionnement dans SaveDialog avecInitialDir
    Par boyerf dans le forum Composants VCL
    Réponses: 4
    Dernier message: 12/12/2002, 21h46
  5. ca ne fonctionne pas (generateur auto-incrémentant)
    Par tripper.dim dans le forum SQL
    Réponses: 7
    Dernier message: 26/11/2002, 00h10

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