【问题标题】:create a list with the given number of strings创建具有给定数量的字符串的列表
【发布时间】:2017-03-20 05:22:51
【问题描述】:

我正在尝试使用给定数量的字符串创建一个列表。因此,如果我输入 (make-row 3),它将是 '("ivy" "ivy" "ivy"),如果我输入 (make-row 2),它将是 '("ivy" "ivy)。

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

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

你能告诉我如何编写这段代码或我做错了什么吗?我正在家里学习如何使用 Typed/Racket 进行编程,因此无法接触到老师或导师 :(

【问题讨论】:

    标签: functional-programming lisp racket typed-racket


    【解决方案1】:

    只需使用内置程序之一:

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

    但是,如果您想从头开始,请使用标准模板通过consing 结果来构建输出列表。请注意,您的代码将无法工作,因为 (list "ivory") 位于不知名的地方 - 仅返回条件的最后一个表达式,无论如何这不是我们递归构建列表的方式。试试这个:

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

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

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

    【讨论】:

      猜你喜欢
      • 2014-01-06
      • 2013-11-08
      • 1970-01-01
      • 2022-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多