尝试在 Racket 中创建类似于 "make-list" 函数的东西
Trying to create something similar to the "make-list" function in Racket
我正在尝试编写一个函数,让我输入一个列表,它会生成一个列表列表。产品中的每个列表将包含原始列表索引 i 中的内容的 i+1 个副本。
所以像 (expand (list "a" "b" "c")) 会给我 (list (list "a") (list "b" "b") (list "c" "c" "c") ).
我正在使用带有列表缩写的 Racket Beginning Student,但不允许我使用“make-list”功能。
用新参数编写辅助函数(i = 重复数)并使用函数make-list
重复给定元素i 次(或编写您自己的 make-list
版本):
(define (my-make-list i elem)
(if (<= i 0) '()
(cons elem (my-make-list (- i 1) elem))))
(define (expand-help lst i)
(if (null? lst) '()
(cons (my-make-list i (car lst))
(expand-help (cdr lst) (+ i 1)))))
(define (expand lst)
(expand-help lst 1))
示例:
> (expand (list "a" "b" "c"))
(list (list "a") (list "b" "b") (list "c" "c" "c"))
我正在尝试编写一个函数,让我输入一个列表,它会生成一个列表列表。产品中的每个列表将包含原始列表索引 i 中的内容的 i+1 个副本。 所以像 (expand (list "a" "b" "c")) 会给我 (list (list "a") (list "b" "b") (list "c" "c" "c") ).
我正在使用带有列表缩写的 Racket Beginning Student,但不允许我使用“make-list”功能。
用新参数编写辅助函数(i = 重复数)并使用函数make-list
重复给定元素i 次(或编写您自己的 make-list
版本):
(define (my-make-list i elem)
(if (<= i 0) '()
(cons elem (my-make-list (- i 1) elem))))
(define (expand-help lst i)
(if (null? lst) '()
(cons (my-make-list i (car lst))
(expand-help (cdr lst) (+ i 1)))))
(define (expand lst)
(expand-help lst 1))
示例:
> (expand (list "a" "b" "c"))
(list (list "a") (list "b" "b") (list "c" "c" "c"))