2017-01-30 124 views
0

的大小比方说,我有一个(list a b c d)其中有4创建相同的元素列表到另一个列表

长我也有一个对象,说(circle 4 "solid" "white")

我想列出一个对象,列表的长度为第一个列表。

所以最终的结果将是:

(list (circle 4 "solid" "white") (circle 4 "solid" "white") (circle 4 "solid" "white") (circle 4 "solid" "white")) 

,除非它是地图我宁可不使用循环或任何更高阶的功能或应用。

回答

2

您正在寻找make-list

(make-list 4 'some-value) 
; ==> (some-value some-value some-value some-value) 

所以,如果你想尽可能多的元素,其他一些列表,你只需要知道length

(make-list (length other-list) (circle 4 "solid" "white")) 
; ==> (#<object1> #<object1> #<object1> #<object1>) 

由于make-list是将评估的功能参数(circle ...)表达式使它成为列表,以便您的列表元素将指向同一个对象而不是单独创建的对象。如果你想要,你可以使用map

(map (λ (ignored) (circle 4 "solid" "white")) other-list) 
; ==> (#<object1> #<object2> #<object3> #<object4>) 
相关问题