示例:
如何转换列表:
'(0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15)
列入名单:
'((0 1 2 3)(4 5 6 7)(8 9 10 11)(12 13 14 15))
根据目前为止提供的答案,这就是我提出的:
首先定义从列表的开头接受'n'个元素的函数:
(define (take-up-to n xs)
(define (iter xs n taken)
(cond
[(or (zero? n) (empty? xs)) (reverse taken)]
[else (iter (cdr xs) (- n 1) (cons (car xs) taken))]))
(iter xs n '()))
Run Code Online (Sandbox Code Playgroud)
第二个是列表其余部分的类似功能:
(define (drop-up-to n xs)
(define (iter xs n taken)
(cond
[(or (zero? n) …Run Code Online (Sandbox Code Playgroud)