J'apprends SICP maintenant et faire le ex2.23 j'ai wrirten le code suivant:la différence entre si et cond?
(define (for-each proc items)
(if (null? items)
#t
((proc (car items))
(for-each proc (cdr items)))))
mais lors de l'exécution, l'erreur de la cause: application procédure: procédure prévue, donnée: #; arguments étaient les suivants:()
je pense que je connais la raison: je l'appelle pour-chaque fonction récursive, tous appelé à-chacun voulait retourner la valeur
mais quand je l'ai modifié le code:
(define (for-each proc items)
(cond ((null? items) #t)
(else (proc (car items)) (for-each proc (cdr items)))))
il fonctionne bien. Je ne comprends pas, pourquoi? dans cond, est-ce que chaque appelé pour-chacun pas besoin de retourner la valeur?
i utilisé DrScheme, et choisissez la langue SICP
je ne suis pas un locuteur natif de l'anglais, donc s'il y a qqch qui n'est pas décrit clairement, merci de me dire
merci beaucoup! très clairement – Vincent
'begin' est la bonne chose à faire si vous voulez évaluer plusieurs instructions dans une clause' if' – newacct
génial! tu m'as fait apprendre plus, merci – Vincent