在列表Scheme中插入列表

时间:2017-06-25 05:49:27

标签: list lambda scheme

我想创建一个数字列表二进制文件,我做了一个函数来制作二进制文件(列表1和0),但是当我尝试将这些列表引入列表时出现问题。

(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)))))

1 个答案:

答案 0 :(得分:0)

如果你的程序正在构建一个列表作为输出,那么在基本情况下不要display,它会与递归混淆。此外,你没有正确调用make,你应该传递两个参数。并且insert没有在任何地方插入元素......让我们重新开始,是吗?

(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)