我知道
(define (repe k n) (make-list k n))
组成一个列表,其中 n 出现 k 次,但是...如何构造一个类似的句子,其中 k 是第一个元素和 n 上一个列表的第二个?
我的
(define (repe x) (make-list car(x) cdr(x)) list)
似乎不起作用。
另一方面,我希望列表 n 的第二个元素不是数字,而是字母。怎么做(因为 make-list 似乎只是为数字定义的)?
答案 0 :(得分:1)
函数的应用方式如下:(car x)
和(cdr x)
,而不是car(x)
和cdr(x)
。
(cdr x)
是一个列表-第二个元素是(car (cdr x))
,或简称为(cadr x)
。
您的描述不完全清楚,但似乎您正在寻找
(define (repe xs) (make-list (car xs) (cadr xs)))
示例:
> (repe (list 4 #\Z))
'(#\Z #\Z #\Z #\Z)
> (repe (list 3 "hello"))
'("hello" "hello" "hello")
> (repe '(2 (+ 1 1)))
'((+ 1 1) (+ 1 1))