Je rencontre des difficultés pour ajouter une liste dans cette fonction de schéma.Problème avec le schéma de création d'une liste correcte
La fonction est censée prendre 2 arguments, et retourner une liste composée des 2èmes éléments le nombre de fois spécifié dans le 1er élément. Par exemple, si vous appelez (make-list? 5 4)
, votre sortie doit être (4 4 4 4 4)
.
Le problème est que lorsque j'utilise cons
, j'obtiens ((((4 . 4) . 4) . 4) . 4)
à la place. Si je comprends bien, j'ajoute à la fin de la liste entière comme un objet à chaque fois, pas le dernier élément comme je veux. Je ne suis pas sûr de la façon de le réparer.
Voici ma fonction, des suggestions sur la façon de parer au dernier élément au lieu de la liste en tant qu'objet seraient géniales. (Ou d'autres suggestions si ce n'est pas le seul/réel problème.)
;make-list
(define make-list?
(lambda (N A)
(if (= N 1)
A
(cons (make-list?(- N 1) A) A)
)
)
)
Un simple commentaire de style, mais la plupart du temps des fonctions qui se terminent par '?' sont des prédicats qui retournent true ou false. – samdphillips