创建一个包含给定字符串数的列表

时间:2016-11-06 22:53:12

标签: functional-programming lisp racket typed-racket

我正在尝试使用给定数量的字符串创建列表。因此,如果我输入(make-row 3)它将是'(“常春藤”“常春藤”“常春藤”)并且如果我输入(make-row 2)它将是'(“常春藤”“常春藤”。

我目前有以下代码但不起作用:

(define (make-row a)
  (cond
    ((= 0 a) '())
    (else
    (list "ivory")
    (make-row (- a 1)))))

您能否告诉我如何编写此代码或我做错了什么?我正在学习如何在家中使用Typed / Racket进行编程,因此无法接触教师或导师:(

1 个答案:

答案 0 :(得分:1)

只需使用其中一个内置程序:

(define (make-row a)
  (make-list a "ivory"))

但是,如果您想从头开始,请使用标准模板通过cons结果构建输出列表。请注意,由于(list "ivory")处于中间位置,您的代码将无法正常工作 - 只返回条件的最后一个表达式,无论如何,这不是我们递归构建列表的方式。试试这个:

(define (make-row a)
  (cond ((= 0 a) '())
        (else (cons "ivory" (make-row (- a 1))))))

无论哪种方式,它都按预期工作:

(make-row 3)
=> '("ivory" "ivory" "ivory")