gpt4 book ai didi

LISP:如何获得列表的总和? (没有全局变量)

转载 作者:太空宇宙 更新时间:2023-11-03 18:37:16 24 4
gpt4 key购买 nike

我是 LISP 新手。

为了得到一个列表的总和,我这样写——

(setf sum 0.0)
(mapcar #'(lambda(x)
(setf sum (+ sum x)) sum) values))

例如,如果您将 '(1 2 3 4) 作为输入,上述代码将返回 '(1 3 6 10) 作为输出,依此类推。

是否可以在不使用全局变量 sum 的情况下(以更优雅的方式)做同样的事情?

最佳答案

(loop for x in '(1 2 3 4) sum x into y collect y)

scanl 是一个单行代码:

(defun scanl (f init xs)
(loop for x in xs collect (setf init (funcall f init x))))

关于LISP:如何获得列表的总和? (没有全局变量),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15373982/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com