Précédent   Forum du club des développeurs et IT Pro > Autres langages > Langages fonctionnels > Scheme
Scheme Forum d'entraide sur la programmation en langage fonctionnel Scheme
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 03/01/2013, 15h24   #1
dragonfly
Membre actif
 
Inscription : janvier 2006
Messages : 398
Détails du profil
Informations personnelles :
Âge : 28

Informations forums :
Inscription : janvier 2006
Messages : 398
Points : 159
Points : 159
Envoyer un message via MSN à dragonfly
Par défaut Fonction récursive

Bonjour à tous,

je débute sous Scheme, j'ai trouvé un tutorial qui me permet d'avancer mais je bloque sur un probléme à priori tout simple.
Je créé un vecteur et j'essaye juste d'afficher en fonction du nombre d'elements. Voici le code et l'erreur

Code :
1
2
3
4
5
6
7
8
9
10
11
12
(define table (make-vector 3 (make-vector 3 #\space)))

(define aff
  (lambda (vect cpt)
    (display (vector (vector-length vect) cpt) )
    (if (>= cpt (vector-length vect) )
       (display (quote stop))
       (
       (display "| | | |")
       (newline)
       (aff vect (+ cpt 1))))))
Code :
1
2
3
4
5
6
7
8
9
10
11
 (aff table 0)
#(3 0)| | | |
#(3 1)| | | |
#(3 2)| | | |
#(3 3)stop. . application: not a procedure;
 expected a procedure that can be applied to arguments
  given: #<void>
  arguments...:
   #<void>
   #<void>
L'affichage se fait bien , il m'affiche bien le stop mais je ne comprend pas pourquoi le programme ne s'arrête pas et me lance une erreur.
A moins que l'erreur soit du à autre chose qui m'échappe...

Par avance merci
__________________
La vie n'est qu'un grain d'éphémère sur une plage d'illusions
Mon CV en ligne ICI
dragonfly est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2013, 15h39   #2
dragonfly
Membre actif
 
Inscription : janvier 2006
Messages : 398
Détails du profil
Informations personnelles :
Âge : 28

Informations forums :
Inscription : janvier 2006
Messages : 398
Points : 159
Points : 159
Envoyer un message via MSN à dragonfly
Au temps pour moi,

je viens de découvrir que si il y'a plusieurs instructions dans un if, il faut mettre un begin.

Probléme résolu.

Code :
1
2
3
4
5
6
7
8
9
10
(define aff
  (lambda (vect cpt)
    (display (vector (vector-length vect) cpt) )
    (if (>= cpt (vector-length vect) )
       (display (quote stop))
       (begin
         (display (quote OK))
         (newline)
         (aff vect (+ cpt 1))))))
__________________
La vie n'est qu'un grain d'éphémère sur une plage d'illusions
Mon CV en ligne ICI
dragonfly est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 08h56.


 
 
 
 
Partenaires

Hébergement Web