我不确定我是否可以在这里提出这个问题。如果这不是正确的地方,请告诉我,我会删除它。
我正在学习Racket,有人告诉我在函数式编程风格中要避免使用set!
。但我很困惑,我不理解“函数式编程风格”的含义。只是为了学习,我想问这个问题。
我有以下代码:
(define lst1 '())
(do ([i n (- i 1)])
((zero? i))
; Get an item.
(set! item (random-chooser original-list))
; Insert it into an auxiliary list, lst1
(set! lst1 (cons item lst1))
; Remove the item from the original list
(set! original-list (remove item original-list)))
(append (list lst1) (list original-list))))))
这段代码运行良好。我需要随机选择
original-list
列表中的n
个项,且不重复,并创建一个具有两个子列表的列表,其中lst1
包含选定的n
个项,第二个子列表包含original-list
中剩余的项。是否有更好的方法来完成此操作,而不使用
set!
?
set!
。感谢您的评论。 - VansFannel