2017-06-25 3 views
0

Je veux créer une liste de binaires de nombres et j'ai fait une fonction pour faire des binaires (listes de 1 et 0) mais quand j'essaye d'introduire ces listes à une liste quelque chose tourne mal.Insérer des listes dans une liste Schéma

(define make (lambda (bin s) 
    (if (= s 0) 
     (display bin) 
     (make (cons (random 2) bin) (- s 1))))) 

(define insert (lambda (ls a) 
    (if (= a 0) 
     (display ls) 
     (insert (cons make ls) (- a 1))))) 

Répondre

0

Si votre procédure est la construction d'une liste en tant que sortie, de ne pas display dans le cas de base, qui salit avec la récursion. En outre, vous n'appelez pas correctement make, vous êtes censé lui passer deux arguments. Et insert n'insère pas un élément n'importe où ... Commençons, allons-nous?

(define make 
    (lambda (bin s) 
    (if (= s 0) 
     bin 
     (make (cons (random 2) bin) (- s 1))))) 

(make '() 5) 
=> '(1 0 0 1 1) 

(define insert 
    (lambda (ls e a) 
    (if (= a 0) 
     (cons e ls) 
     (cons (car ls) 
       (insert (cdr ls) e (- a 1)))))) 

(insert '(1 2 4) 3 2) 
=> '(1 2 3 4)