常见的lisp中的重复元素

时间:2012-11-18 16:25:06

标签: functional-programming lisp common-lisp

我尝试使用two arguments x and y创建一个函数,创建一个list of y times repeated elements X但我很困惑如何使用哪个或哪个方法使用我认为列表压缩可以做但我想要更短和简单的方法,例如我希望我的简单代码就像这样

if y = 4
 and x = 7
 result is list of elements (7, 7, 7, 7)

我怎么能去做任何想法?书籍链接或任何会给我一个线索我尝试搜索,但我不幸运

2 个答案:

答案 0 :(得分:20)

您可以将make-list initial-element 键一起使用:

CL-USER> (make-list 10 :initial-element 8)
   (8 8 8 8 8 8 8 8 8 8)

Óscar答案提供了一个很好的例子,说明如何自己编写这样的函数。

答案 1 :(得分:1)

试试这个,它在Scheme中,但一般的想法应该很容易转换为Common Lisp:

(define (repeat x y)
  (if (zero? y)
      null
      (cons x
            (repeat x (sub1 y)))))

修改

现在,在Common Lisp中:

(defun repeat (x y)
  (if (zerop y)
      nil
      (cons x
            (repeat x (1- y)))))