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 :

un let signalé en erreur, question de débutant


Sujet :

Scheme

  1. #1
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2010
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2010
    Messages : 406
    Points : 92
    Points
    92
    Par défaut un let signalé en erreur, question de débutant
    bonjour
    je débute aujourd'hui en Scheme
    j'ai passé du temps à trouver de la doc et à dénicher ceci :
    Nom : scheme.png
Affichages : 329
Taille : 53,1 Ko
    j'essaie de comprendre comment faire une liste, mon but du moment étant de parvenir tout seul à lister des caractères unicode
    je ne comprend pas pourquoi il me signale cette erreur
    j'ai regardé plein d'exemples sur https://www.scheme.com/tspl4/control.html#./control:h2 et le `let` me semble être écrit comme ça
    si vos lumières peuvent m'aider, merci !
    Vincent

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 341
    Points : 528
    Points
    528
    Par défaut
    Bonsoir,

    Comme ceci, cela fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    (let ([x 10])
         (do 
             ([i 0 (+ i 1)])
             ((= i 10))
             (set! x (+ x 1))
         ) 
    )
    ... mais cela ne fait qu'incrémenter x de 11 jusqu'à 20 par pas de 1.

  3. #3
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2010
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2010
    Messages : 406
    Points : 92
    Points
    92
    Par défaut
    bonjour
    mon est pour le moment d'avoir un Scheme qui fonctionne.
    Or j'utilise Scheme pour le logiciel TeXmacs, et, si j'ai bien compris, il existe plusieurs versions de Scheme, et celle de TeXmacs est "Guile".
    Il semblerait d'après le forum TeXmacs que les [ ] ne soient pas acceptés par Guile.
    Ce que je me demande, c'est deux choses :
    1) est-il possible sur ce forum d'obetnir des éclaircissements à propos du Scheme "Guile" ?
    2) pouvez-vous me conseiller une interface pour (taper et) exécuter du code Scheme ? ou est-ce que depuis le terminal de mac os X je peux télécharger une commande "scheme", mon but étant d'apprendre à écrire des .scm et de les exécuter.
    merci
    Vincent

  4. #4
    Membre actif
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mai 2013
    Messages : 152
    Points : 275
    Points
    275
    Par défaut
    Bonjour !

    Oui, il y a en effet plusieurs dialectes de Scheme. Vas-y, pose tes questions ! On va voir.

    Je dois dire que je n’écris pas beaucoup en Scheme et je n’utilise aucun environnement. J’écris tout simplement le code dans un éditeur. En même temps, j’ouvre l’intérpreteur dans le terminal, j’y charge le fichier et expérimente avec le code.

    Je suppose qu’il est possible d’installer Guile sur Mac OS: http://macappstore.org/guile/

  5. #5
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Citation Envoyé par elodouwen Voir le message
    Or j'utilise Scheme pour le logiciel TeXmacs, et, si j'ai bien compris, il existe plusieurs versions de Scheme, et celle de TeXmacs est "Guile".
    Bonjour Vincent,

    je suis un grand utilisateur d'emacs (depuis 1983 et sous mac os X, entre autres). J'ai écrit des milliers de fonctions en emacs-lisp... et, grâce à ton post, j'apprends que le "nouveau" langage d'extension serait Guile.

    Ce ne sera pas un problème pour moi, car Scheme et emacs-lisp sont très proches et, de plus, Guile sait absorber de l'emacs-lisp.

    Concernant ton problème, comme tu veux écrire des extensions pour TeXmacs, il est clair qu'il vaut mieux que tu commences à te familiariser avec le "bon" scheme, à savoir Guile. (inutile de t'encombrer la tête avec une variante non compatible avec ton projet!)

    La page suivante indique comment l'installer sur ton mac:
    http://www.texmacs.org/tmweb/downloa...ements.en.html

    Sur mon mac, j'ai juste tapé brew install guile dans le Terminal et voilà, j'ai un interprète guile sous la main:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    $ brew install guile
    ... <= plein de texte...
    
    $ guile
    GNU Guile 2.2.7
    Copyright (C) 1995-2019 Free Software Foundation, Inc.
    
    Guile comes with ABSOLUTELY NO WARRANTY; for details type `,show w'.
    This program is free software, and you are welcome to redistribute it
    under certain conditions; type `,show c' for details.
    
    Enter `,help' for help.
    scheme@(guile-user)> (+ 2 3)
    $1 = 5
    scheme@(guile-user)> (quit)
    Es-tu à l'aise avec le Terminal ?

    Je ne sais pas s'il existe, pour cet interprète, une interface plus avancée que la ligne de commande dans le Terminal.
    (pour emacs-lisp, j'utilise M-x ielm RET pour avoir un interprète à l'intérieur de l'éditeur, avec toutes les facilités d'édition et de debug)

  6. #6
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2010
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2010
    Messages : 406
    Points : 92
    Points
    92
    Par défaut
    bonjour Jack et ravi de t'avoir rencontré sur ce forum alors
    merci aussi à byjav pour ta réponse !
    je vais concentrer mes efforts sur l'installation de emacs pour pouvoir programmer... et ensuite j'en viendrai à des questions sur le langage lui-même !
    donc Jack, je suis plus ou moins à l'aise avec le terminal ; les manipulations élémentaires du bash ça va, mais dès que qqch bloque je suis perdu !
    j'ai fait et maintenant le résultat est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    (-----------) guile
    dyld: Library not loaded: /usr/local/opt/libffi/lib/libffi.6.dylib
      Referenced from: /usr/local/bin/guile
      Reason: image not found
    Abort trap: 6
    Le Guile de TeXmacs est le 1.8 mais un gars de TeXmacs m'avait indiqué que je pouvais travailler en 2.2, les différences étant mineures, donc j'avais aussi fait avant ton intervention, ce qui avait conduit à des erreurs.
    Je peux si tu veux t'envoyer le résutlat du terminal pour .

    Au plaisir !

    Vincent

  7. #7
    Membre actif
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mai 2013
    Messages : 152
    Points : 275
    Points
    275
    Par défaut
    > je vais concentrer mes efforts sur l'installation de emacs

    Je dirais que ça te va plutôt distraire, Emacs étant un éditeur très particulier. S’il s’agissait de Common Lisp, Emacs serait presque indispensable, mais pour débuter avec Scheme, un éditeur quelconque suffit.

  8. #8
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2010
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2010
    Messages : 406
    Points : 92
    Points
    92
    Par défaut
    mon but est juste de tester des programmes .Scm avec le "dialecte" guile
    je conçois que n'importe quel éditeur de texte suffit mais comment exécuter un .scm ensuite ?
    c'est ça en fait ma question
    au début je n'avais pas de parti pris pour utiliser emacs, aquamacs ou tel autre éditeur
    c'est plutôt Jack qui m'a donné envie de passer par aquamacs
    je parle de aquamacs, car, même si emacs me fait envie vu son importance dans le mon du libre et du développement, ce qui me casse les pieds ce sont les raccourcis clavier...

  9. #9
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Citation Envoyé par elodouwen Voir le message
    je vais concentrer mes efforts sur l'installation de emacs pour pouvoir programmer... et ensuite j'en viendrai à des questions sur le langage lui-même !
    Pour info, celui que j'utilise est:
    https://emacsformacosx.com

    Pas besoin de compiler, il est tout prêt!

    Mais Aquamacs est bien aussi!

    je parle de aquamacs, car, même si emacs me fait envie vu son importance dans le mon du libre et du développement, ce qui me casse les pieds ce sont les raccourcis clavier...
    Depuis déjà pas mal de lustres, tous les emacs ont une interface graphique, avec des menus, à peu près digne de ce nom.
    On peut quasiment tout faire avec la souris si on n'aime pas les raccourcis clavier.

    Évidemment, pour ceux qui, comme moi, ont commencé sur un VT100 (après les cartes perforées!), difficile de lâcher l'habitude des raccourcis!

    donc Jack, je suis plus ou moins à l'aise avec le terminal ; les manipulations élémentaires du bash ça va, mais dès que qqch bloque je suis perdu !
    Le shell est mon 2ème langage, après le lisp...

    j'ai fait et maintenant le résultat est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    (-----------) guile
    dyld: Library not loaded: /usr/local/opt/libffi/lib/libffi.6.dylib
      Referenced from: /usr/local/bin/guile
      Reason: image not found
    Abort trap: 6
    Woah!
    Est-ce que ton brew est bien à jour ?
    Dans le doute, tu peux recommencer l'installation de guile après avoir fait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    brew update
    brew upgrade

  10. #10
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2010
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2010
    Messages : 406
    Points : 92
    Points
    92
    Par défaut
    bonjour Jack !
    j'ai fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    1) brew update
    2) brew upgrade
    3) brew install guile
    4) guile
    résultat du 3) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Updating Homebrew...
    Warning: guile 2.2.7 is already installed and up-to-date
    To reinstall 2.2.7, run `brew reinstall guile`
    résultat du 4) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    dyld: Library not loaded: /usr/local/opt/libffi/lib/libffi.6.dylib
      Referenced from: /usr/local/bin/guile
      Reason: image not found
    Abort trap: 6
    Vincent...

  11. #11
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Citation Envoyé par elodouwen Voir le message
    résultat du 4) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    dyld: Library not loaded: /usr/local/opt/libffi/lib/libffi.6.dylib
      Referenced from: /usr/local/bin/guile
      Reason: image not found
    Abort trap: 6
    Je ne suis pas un spécialiste de brew...

    mais, d'après ce que j'ai trouvé sur une issue de brew, ça veut probablement dire qu'il y a un problème avec la libffi.

    Lorsque je tape brew list libffi chez moi, il me répond:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $ brew list libffi
    /usr/local/Cellar/libffi/3.2.1/lib/libffi.6.dylib
    /usr/local/Cellar/libffi/3.2.1/lib/libffi-3.2.1/ (2 files)
    /usr/local/Cellar/libffi/3.2.1/lib/pkgconfig/libffi.pc
    /usr/local/Cellar/libffi/3.2.1/lib/ (2 other files)
    /usr/local/Cellar/libffi/3.2.1/share/info/libffi.info
    /usr/local/Cellar/libffi/3.2.1/share/man/ (4 files)
    Qu'est-ce que ça dit chez toi? Est-il installé?

    Par ailleurs, $ brew list libffi | xargs ls -ltr indique que les fichiers sont de 2014 ou 2018 et qu'il y a bien le lien /usr/local/Cellar/libffi/3.2.1/lib/libffi.dylib -> libffi.6.dylib.

    S'il n'est pas installé chez toi, comme indiqué dans une issue de platformio, il peut être nécessaire de faire:
    Mais, comme indiqué un peu plus loin, sur la même issue, on peut avoir une réponse indiquant qu'elle est installée mais pas liée ("Warning: libffi 3.2.1 is already installed, it's just not linked"), avec la proposition de faire les liens par:
    S'il refuse de le faire ("Warning: Refusing to link macOS-provided software: libffi"), alors une désinstallation + une réinstallation semble régler le problème:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    brew uninstall libffi
    brew install libffi
    Voilà ce que je peux te proposer pour l'instant...

  12. #12
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2010
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2010
    Messages : 406
    Points : 92
    Points
    92
    Par défaut
    merci Jack

    j'ai pas cherché à tout comprendre j'ai juste fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    brew uninstall libffi
    brew install libffi
    brew install guile 2.2
    guile
    et ça m'a lancé Guile
    ouf...

    par contre maintenant comment je fais pour utiliser l'interpréteur ? j'ai essayé de faire :
    où à la place de * j'ai mis le path complet d'un petit fichier .scm
    mais il ne comprend pas

    seconde question : puis je faire un lien maintenant entre cet interpréteur guile et aquamacs ?

    Vincent

  13. #13
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Citation Envoyé par elodouwen Voir le message
    merci Jack

    j'ai pas cherché à tout comprendre j'ai juste fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    brew uninstall libffi
    brew install libffi
    brew install guile 2.2
    guile
    et ça m'a lancé Guile
    ouf...
    Yes !

    par contre maintenant comment je fais pour utiliser l'interpréteur ? j'ai essayé de faire :
    où à la place de * j'ai mis le path complet d'un petit fichier .scm
    mais il ne comprend pas
    Euh... Là, c'est pas pour dire mais il est peut-être temps de RTFM...
    Bon évidemment, il vaut mieux lire l'anglais... (ou utiliser un traducteur)

    seconde question : puis je faire un lien maintenant entre cet interpréteur guile et aquamacs ?
    Bien sûr! C'est fait pour!
    Il semble que le mieux soit d'utiliser Geiser.
    Commence par lire Using-Guile-in-Emacs
    puis geiser

  14. #14
    Membre actif
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mai 2013
    Messages : 152
    Points : 275
    Points
    275
    Par défaut
    > mais il ne comprend pas

    Quel erreur donne-t-il et quel est le continu du fichier ?

  15. #15
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2010
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2010
    Messages : 406
    Points : 92
    Points
    92
    Par défaut
    bonjour Jack ! et bonjour Byjav
    Byjav, je pense que ta question n'est peut être plus d'actualité vu que j'ai réussi à installer guile ?
    Jack, j'ai regardé ce que tu m'as dit mais je ne parviens pas à aller vraiment plus loin avec aquamacs/emacs
    pour le moment j'édite mon programme .scm avec aquamacs, et je l'attaque avec `guile truc.scm`dans le terminal
    je vais essayer de comprendre Scheme
    je ne vois même pas comment modifier la valeur d'une variable...
    mon but est de faire une boucle for... peut être en utilisant une liste avec cdr et tout ça ? surtout ne me donnez pas la réponse toute faite
    pour le moment ceci est pour moi une grande réussite.... et ne souriez pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    (display "------->")
    (let
        ((a 6)(b 10)(c 0))
      (let ((d (* a b)))
           (display d)
           )
    )
    (let ((a '(1 2 3 4)))
      (display a)
      )
    (display "<-------")
    questions :
    1) comment on fait pour afficher un retour chariot ?
    2) dans la ligne de commande Scheme (pour tester des "atomes" d'instructions) la flèche gauche ne marche pas (alors qu'elle marche dans le terminal) si ej veux reprendre ma précédente commande
    3) il est question, à divers endroits, de compilation. Je ne comprend pas très bie qui compile quoi ni à quel moment ?
    4) je ne trouve pas dans le man terminal de guile comment désactiver l'affichage de tout un tas de trucs comme ça qui s'affichent avant mon résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ;;; note: source file /Users/***/***/scheme.scm
    ;;;       newer than compiled /Users/***/.cache/guile/ccache/2.2-LE-8-3.A/Users/vincentdouce/aa_tout/TeXmacs/scheme.scm.go
    ;;; note: auto-compilation is enabled, set GUILE_AUTO_COMPILE=0
    ;;;       or pass the --no-auto-compile argument to disable.
    ;;; compiling /Users/Users/***/Users/***/***/scheme.scm
    ;;; compiled /Users/Users/***/.cache/guile/ccache/2.2-LE-8-3.A/Users/***/***/scheme.scm.go
    Merci de votre aide...
    Vincent

  16. #16
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Citation Envoyé par elodouwen Voir le message
    bonjour Jack ! et bonjour Byjav
    Byjav, je pense que ta question n'est peut être plus d'actualité vu que j'ai réussi à installer guile ?
    Admettons... (si ton "il ne comprend pas" était en lien avec l'installation)

    Jack, j'ai regardé ce que tu m'as dit mais je ne parviens pas à aller vraiment plus loin avec aquamacs/emacs
    Si je trouve le temps, j'essaierai d'aller voir comment simplement lancer le REPL depuis emacs...

    pour le moment j'édite mon programme .scm avec aquamacs, et je l'attaque avec `guile truc.scm`dans le terminal
    Bonne manière de commencer!

    je vais essayer de comprendre Scheme
    Ma manière de faire: essayer et se référer au manuel de référence.
    Comme pas mal de langages de la même famille (genre le_lisp, common lisp, emacs-lisp, LOGO, etc.), il y a des milliers de fonctions prédéfinies.
    Il est assez difficile, pour un esprit normal, de les apprendre toutes par coeur avant de commencer.
    La voie usuelle (au risque de me répéter): essayer et se référer au manuel de référence...
    Mais tu peux aussi commencer par lire et survoler le tutoriel.

    je ne vois même pas comment modifier la valeur d'une variable...
    Peut-être en regardant dans le manuel de référence...

    mon but est de faire une boucle for... peut être en utilisant une liste avec cdr et tout ça ? surtout ne me donnez pas la réponse toute faite
    pour le moment ceci est pour moi une grande réussite.... et ne souriez pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    (display "------->")
    (let
        ((a 6)(b 10)(c 0))
      (let ((d (* a b)))
           (display d)
           )
    )
    (let ((a '(1 2 3 4)))
      (display a)
      )
    (display "<-------")
    questions :
    1) comment on fait pour afficher un retour chariot ?
    Il se pourrait qu'on trouve la réponse... devine où?... dans le manuel de référence...

    2) dans la ligne de commande Scheme (pour tester des "atomes" d'instructions) la flèche gauche ne marche pas (alors qu'elle marche dans le terminal) si ej veux reprendre ma précédente commande
    Hum... je n'ai pas bien compris... Tu veux éditer la ligne en cours d'écriture et pouvoir revenir dans l'historique des lignes tapées, c'est ça?

    Si c'est bien ça, tu peux jeter un coup d'oeil au début du tutoriel de Basile
    qui te dit comment installer GNU_Readline dans ton ~/.guile.

    Connais-tu ce fichier?

    3) il est question, à divers endroits, de compilation. Je ne comprend pas très bie qui compile quoi ni à quel moment ?
    C'est expliqué... dans le manuel de référence au chapitre sur la Compilation

    4) je ne trouve pas dans le man terminal de guile comment désactiver l'affichage de tout un tas de trucs comme ça qui s'affichent avant mon résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ;;; note: source file /Users/***/***/scheme.scm
    ;;;       newer than compiled /Users/***/.cache/guile/ccache/2.2-LE-8-3.A/Users/vincentdouce/aa_tout/TeXmacs/scheme.scm.go
    ;;; note: auto-compilation is enabled, set GUILE_AUTO_COMPILE=0
    ;;;       or pass the --no-auto-compile argument to disable.
    ;;; compiling /Users/Users/***/Users/***/***/scheme.scm
    ;;; compiled /Users/Users/***/.cache/guile/ccache/2.2-LE-8-3.A/Users/***/***/scheme.scm.go
    Merci de votre aide...
    Vincent
    Peut-être en désactivant l'auto-compilation (pas testé)...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    guile --no-auto-compile truc.scm

  17. #17
    Membre actif
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mai 2013
    Messages : 152
    Points : 275
    Points
    275
    Par défaut
    > je ne vois même pas comment modifier la valeur d'une variable...

    Il vaut mieux l’éviter.

    > mon but est de faire une boucle for... peut être en utilisant une liste avec cdr et tout ça ? surtout ne me donnez pas la réponse toute faite

    Il vaut mieux l’éviter aussi.

    Scheme est un langage fonctionnel, pour cette raison il vaut mieux employer des fonctions récursives ou des fonctions d’ordre supérieur.

    En effet, il est facile de transformer un boucle en une fonction récursive. Les variables de la boucle deviennent les arguments de la fonction et le corps de la boucle devient celle de la fonction.

    Par exemple, voici comme on peut calculer la factorielle dans un langaga impératif:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    def factorielle(n)
        p = 1
        for i from 1 to n:
            p = p * i
        return p
    Ici la boucle concerne deux variables: i est le compteur et p est l’accumulateur. Dans le même pseudo-code je peux définir une fonction comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    def factorielle_boucle(n, i, p)
        if i > n:
            return p
        else:
            return factorielle_boucle(n, i + 1, p * i)
    Cette fonction répond à la question : « Comment dois-je traiter le nombre i si j’ai accumulé le produit p »? La réponse est : «Si i est plus grand que n, il faut renvoyer le produit; autrement, il faut appliquer la même règle au nombre suivant en supposant qu’on a accumulé le produit p * i.

    La factorielle:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    factorielle(n) = factorielle_boucle(n, 1, 1)
    Par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    4! = factorielle_boucle(4, 1, 1)
       = factorielle_boucle(4, 2, 1)
       = factorielle_boucle(4, 3, 2)
       = factorielle_boucle(4, 4, 6)
       = factorielle_boucle(4, 5, 24)
       = 24
    Donc, c’est un calcul purement mathématique, sans affectation ni boucles.

    Est-ce clair?

  18. #18
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Citation Envoyé par jack-ft Voir le message
    Si je trouve le temps, j'essaierai d'aller voir comment simplement lancer le REPL depuis emacs...
    Ça y est! J'ai réussi à utiliser guile depuis emacs. Voici ce que j'ai dû faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    M-x package-refresh-contents RET
    M-x package-install RET geiser RET
    Dans mon"~/ .emacs", j'ai dû ajouter ceci (pour que call-process trouve guile):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    (unless (member "/usr/local/bin" exec-path)
      (add-to-list 'exec-path "/usr/local/bin" 'append))
    Une autre possibilité aurait été d'indiquer à geiser où trouver guile, avec (setq geiser-guile-binary "/usr/local/bin/guile")...

    Et enfin:
    qui est plus court que M-x run-geiser RET guile RET...

    Et voilà...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    guile: warning: failed to install locale
    warning: failed to install locale: Invalid argument
    GNU Guile 2.2.7
    Copyright (C) 1995-2019 Free Software Foundation, Inc.
    
    Guile comes with ABSOLUTELY NO WARRANTY; for details type `,show w'.
    This program is free software, and you are welcome to redistribute it
    under certain conditions; type `,show c' for details.
    
    Enter `,help' for help.
    scheme@(guile-user)> (+ 2 3)
    $2 = 5
    scheme@(guile-user)>

  19. #19
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2010
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2010
    Messages : 406
    Points : 92
    Points
    92
    Par défaut
    merci à vous de vos réponses
    bien pris connaissance du Guile Reference Manual
    moins de temps en ce moment d'où mes réponses espacées
    je reviens dans un moment
    j'ai déjà grâce à vous de quoi bosser
    juste un question : M-x ça veut difre quoi ? il faut taper M-x tel quel dans le terminal ? ou c'est un raccourci clavier propre à Emacs ?
    Vincent

  20. #20
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Citation Envoyé par elodouwen Voir le message
    juste un question : M-x ça veut difre quoi ? il faut taper M-x tel quel dans le terminal ? ou c'est un raccourci clavier propre à Emacs ?
    Vincent
    M-x est un raccourci clavier propre à emacs. Ça se lit "méta x" et ça se fait (sur un mac) en tenant la touche "alt" enfoncée le temps de taper un bref "x".

    Je ne sais pas s'il est possible de l'atteindre à partir des menus d'Aquamacs.

    C'est peut-être la commande la plus fondamentale car elle permet d'exécuter n'importe quelle (autre) commande emacs. (il y en a des milliers)

    Par exemple, la séquence M-x run-guile RET se fait en tapant M-x (comme expliqué précédemment), ce qui affiche "M-x " dans le "minibuffer" (la ligne en bas de la fenêtre) et attend que l'on tape la suite, c'est-à-dire les 9 caractères "run-guile" (sans espaces et sans guillemets) suivis d'un appui sur la touche "Retour" (RET).
    Elle permet d'exécuter la commande emacs "run-guile", qui lance un process qui exécute "guile" à l'intérieur d'un buffer emacs qui est tout configuré pour envoyer les caractères tapés au process guile et pour afficher le résultat dans le buffer.

Discussions similaires

  1. Réponses: 9
    Dernier message: 28/11/2014, 16h17
  2. question de débutant sur les objets
    Par boucher_emilie dans le forum ASP
    Réponses: 3
    Dernier message: 06/08/2004, 10h51
  3. [MFC] Quelques questions de débutant...
    Par Sephi dans le forum MFC
    Réponses: 4
    Dernier message: 20/02/2004, 17h25
  4. Questions de débutant
    Par J-P-B dans le forum XMLRAD
    Réponses: 12
    Dernier message: 24/07/2003, 15h19
  5. [HyperFile] 2 questions de débutant
    Par khan dans le forum HyperFileSQL
    Réponses: 2
    Dernier message: 29/04/2002, 23h18

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