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 :

Qu'est-ce que la fonction « let » ?


Sujet :

Scheme

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 6
    Points : 6
    Points
    6
    Par défaut Qu'est-ce que la fonction « let » ?
    est ce que quelqu'un peut m'expliquer à quoi sert la fonction let et comment on l'utilise?

  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 mfroger93 Voir le message
    est ce que quelqu'un peut m'expliquer à quoi sert la fonction let et comment on l'utilise?
    Il n'y a pas de fonction « let » à proprement parler.
    Le « let » est une forme spéciale (c'est–à-dire que l'évaluation en ordre applicatif) qui permet de lier une valeur à une variable (liaison lexicale).
    Ça correspond au « soit » que tu utilises en math, comme dans « soit x la plus grande valeur de l'intervalle [1,10] dans l'expression f(x)» par exemple. Ceci s'écrirait par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (let ([x (obtenir-plus-grande-valeur (creer-intervalle 1 10))]) (f x))
    On a équivalence entre les deux expressions suivantes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     (let ((x valeur)) expression) 
    ( (lambda (x) expression) valeur )
    C'est donc une déclaration de valeur locale, si tu veux.

    Si ce que je te dis ne te parle pas du tout, alors tu devrais aller voir ton prof avant C'est que soit tu veux aller trop vite, soit tu n'as pas bien écouté en classe. Et j'avoue que je parie un peu sur le second.

    Cependant, voici un peu de doc :
    http://download.plt-scheme.org/doc/4...me..ss)._let))
    C'est la doc que tu obtiendrais en utilisant l'excellente aide de Dr Scheme.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    Merci. Maintenant, je sais ce qu'est la fonction let, mais cette information ne résout pas mon problème, et non ce n'est pas une faute d'inattention ; on n'a pas abordé le sujet en classe.
    C'est dans un devoir à rendre. On devait d'abord définir une fonction qui transforme un nombre « normal » dans la structure de donnée voulue. exemple :

    Code Scheme : Sélectionner tout - Visualiser dans une fenêtre à part
    (convert_ecriture 1515) => (10 ( 1 5 1 5))

    puis une fonction qui, lorsque que l'on rentre le précédent résultat, la fonction nous ressort "l'entrée".

    Une fonction qui transforme un nombre de base 10 à base b <10.
    puis de base b <10 à base 10.

    et ensuite le prof nous demande :

    Écrire la version améliorée conv10tob_gene de conv10tob qui fonctionne jusque b = 16 puis écrire la version améliorée convbto10_gene de convbto10 qui fonctionne jusque b = 16.

    et il rajoute plus bas :

    Pour les fonctions conv10tob_gene et convbto10_gene, définir localement une A-liste permetant de faire les conversions A ⇔ 10 B ⇔ 11 etc jusque F ⇔ 15 par :

    Code Scheme : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    (let ((alphabet_10tob ‘((10 A) (11 B)(12 C)(13 D) (14 E) (15 F)))
    ….)
    et
    (let ((alphabet_bto10 ‘((A 10 A)(B 11)(C 12)(D 13) (E 14)(F 15)))
    ….)

    Exemple d’utilisation de la fonction let et d’une A-liste :

    Code Scheme : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    (define (associe nb)
    (let ((alphabet_10tob '((10 A) (11 B)(12 C)(13 D) (14 E) (15 F))))
    (cadr (assoc nb alphabet_10tob))))


    Sans me donner la solution, peux-tu me donner une explication pour m'aider à comprendre ?

  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
    Humm !
    Pour faciliter la lecture, il faut utiliser le tag code comme indiquer dans les règles du forum. http://club.developpez.com/regles/#L3.5

    Et là, je suis très fatigué -_- Je te promet de regarder ça demain. Mais j'ai pas le courage de faire la mise en forme et l'indentation ce soir.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    c'est bn aucun soucis j'ai fini par trouver en tatonnant. merci beaucoup

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

Discussions similaires

  1. La fonction ereg() est désaprouvée, que faire ?
    Par -Fly- dans le forum Langage
    Réponses: 3
    Dernier message: 28/04/2011, 18h37
  2. Réponses: 3
    Dernier message: 19/08/2008, 10h00
  3. Réponses: 1
    Dernier message: 29/07/2008, 12h37
  4. Réponses: 5
    Dernier message: 31/01/2008, 08h34
  5. [GD] Est-ce que c'est possible qu'une fonction tourne mieux sur Win et pas sur Linux
    Par nkki_nkki dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 22/07/2007, 17h34

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