如何在Scheme中制作递增列表和矩阵?

时间:2018-10-29 10:00:03

标签: list scheme

我正在尝试创建一个递增矩阵,但是首先我想创建一个递增列表。这是我的程序;

(define make-lst
  (lambda (a b)
    (if (= a 0)
        '()
        (list b
              (make-lst (- a 1) (+ b 1))))))

但是它给了我输出;

(10 (11 (12 (13 (14 (15 (16 (17 (18 (19 ())))))))))) ;(make-lst 10 10)

如何获取

之类的列表
'(10 11 12 13 14 15 16 17 18 19)

我真的是Scheme的初学者

1 个答案:

答案 0 :(得分:1)

由于(list 1 2)创建了一个列表(1 2),而make-list返回了一个列表,所以它使输出(first (second (...)))

并不奇怪

现在(list a b)执行(cons a (cons b '()),因此您可以将list替换为cons,这样它就可以包含一个元素和一个尾部并限定一个列表。