尝试在 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"))