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

Lisp Discussion :

[Lisp] Lambda fonction


Sujet :

Lisp

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 15
    Points : 6
    Points
    6
    Par défaut [Lisp] Lambda fonction
    Bonjour à tous,

    J'espère que vous me répondrez car je suis vraiment en galère.
    En lisp, il y a moyen d'utiliser les lambda fonction
    Dans le corps de ces fonctions on écrit les instructions mais en fait on ne peut en ecrire plus d'une.
    Seulement la premiere est prise en compte.
    C'est possible de déjouer tout ça?

    ex :de ceux que je vous dire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    (defun test2(x y)
    (    (LAMBDA (x y) (
    			(* x y)
                            (+ x y)
    			)
           ) 
    x y)
    )
    Erreur apparue:
    *** - SYSTEM::%EXPAND-FORM: (* X Y) should be a lambda expression
    Merci :o

  2. #2
    Membre expérimenté
    Avatar de Juju_41
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Février 2003
    Messages
    974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Février 2003
    Messages : 974
    Points : 1 557
    Points
    1 557
    Par défaut Re: [Lisp] Lambda fonction
    Bonjour,

    Citation Envoyé par hanane93
    Dans le corps de ces fonctions on écrit les instructions mais en fait on ne peut en ecrire plus d'une.
    Seulement la premiere est prise en compte.
    C'est possible de déjouer tout ça?
    Je pense voir ce que vous voulez dire, cependant je n'ai pas compris ce que vous vouliez faire avec votre exemple de fonction (test2).
    Lorsque ceci sera interprété :
    Lisp va remplacer (* x y) par son résultat, comme pour (+ x y) ce qui donnera pour x=6 et y=7 ceci :
    Et la il va crier parce que 42 n'est pas une expression à laquelle on peut passer un argument comme 13.

    Que cherchez-vous à faire exactement ?
    Avant de poster, merci de consulter les règles du forum

  3. #3
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Le Lisp si je ne me trompe pas ne connaît pas l'enchaînement séquentiel des instructions, si tu veux enchainer deux instructions, tu peux utiliser la fonction (progn ...) mais c'est pas terrible.
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  4. #4
    Membre expérimenté
    Avatar de Patriarch24
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2003
    Messages
    1 047
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 047
    Points : 1 640
    Points
    1 640
    Par défaut
    Le Lisp si je ne me trompe pas ne connaît pas l'enchaînement séquentiel des instructions, si tu veux enchainer deux instructions, tu peux utiliser la fonction (progn ...) mais c'est pas terrible.
    En quoi cela n'est pas terrible ? En C, on utilise {}, en pascal begin end... On peut tres bien enchainer des instructions, a conditions qu'elles soient dans un bloc. progn permet d'avoir un bloc dont la valeur sera celle renvoyée à la derniere instruction.
    En premier lieu, utilisez un moteur de recherche.
    En second lieu, postez sur le forum adéquat !

  5. #5
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Ça va quand même à l'encontre du principe de programmation fonctionnelle non ?
    Je ne suis pas du tout spécialiste de Lisp, mais il me semble me rappeler que mes profs à l'époque considéraient celà comme une horreur !!!
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  6. #6
    Membre expérimenté
    Avatar de Patriarch24
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2003
    Messages
    1 047
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 047
    Points : 1 640
    Points
    1 640
    Par défaut
    Ça va quand même à l'encontre du principe de programmation fonctionnelle non ?
    Dans le meilleur des mondes, tout Lisper écrirait ses programmes en utilisant la récursion, etc... Mais le monde réel est plus cruel ... Si le langage le propose, on peut l'utiliser (c'est pas interdit) 8) !
    En premier lieu, utilisez un moteur de recherche.
    En second lieu, postez sur le forum adéquat !

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par Trap D
    Ça va quand même à l'encontre du principe de programmation fonctionnelle non ?
    Je ne suis pas du tout spécialiste de Lisp, mais il me semble me rappeler que mes profs à l'époque considéraient celà comme une horreur !!!
    Ce sont des ignares. Common Lisp est un langage impératif orienté objet qui supporte la programmation fonctionnelle.

  8. #8
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Citation Envoyé par Wilkipedia
    Common Lisp is a multiparadigm programming language that:
    • Supports programming techniques such as imperative, functional and object-oriented programming.
    Ce qui est un peu différent.
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  9. #9
    Membre à l'essai
    Inscrit en
    Mars 2004
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 7
    Points : 13
    Points
    13
    Par défaut
    Citation Envoyé par aurelienz
    Ce sont des ignares. Common Lisp est un langage impératif orienté objet qui supporte la programmation fonctionnelle.
    non la tu nous la fait à l'envers ...

    lisp est langage fonctionnel qui peut surement ( parce que j'ai pas vérifié ) faire de l'impératif ( en fait il est je crois tellement malléable qu'on peut évaluer un peu tout ce qu'on veut a sa sauce ). Pour la partie objet elle existe dans CLOS qui est une extension de common lisp.

    Sinon pour les profs, ils ont surement enseigné Lisp dans un cours sur la programmation fonctionnelle d'ou leur horreur de l'utilisation des traits impératifs.
    C'est comme utiliser java pour faire une grosse méthode main pleine de variable globale

Discussions similaires

  1. Tester si une variable est une lambda fonction
    Par rambc dans le forum Général Python
    Réponses: 2
    Dernier message: 15/11/2009, 18h52
  2. Récupérer la formule d'une lambda fonction
    Par rambc dans le forum Général Python
    Réponses: 5
    Dernier message: 17/08/2009, 11h20
  3. Réponses: 13
    Dernier message: 11/12/2006, 14h44
  4. [Lisp] Variable considérée comme une fonction
    Par lunart dans le forum Lisp
    Réponses: 2
    Dernier message: 07/04/2005, 15h48
  5. [Lisp] Communiquer avec une fonction en c++
    Par Nadine dans le forum Lisp
    Réponses: 5
    Dernier message: 10/01/2005, 20h15

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