gpt4 book ai didi

arrays - 打印数组 LISP 的内容

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

为什么这段代码没有打印出数组的内容-

(defun loopfn (state)       (loop for x from 0 to 2 do        (loop for y from 0 to 2 do             (aref state x y))))

Here I am passing a 3x3 matrix which is built like this -

`(setq i (make-array '(3,3) :initial-contents '((0 1 3) (4 2 5) (7 8 6))))`

I am calling - (loopfn i)

Edit--------@GregThanks for pointing that out...I had the following question..Why does this print the output ...

(defun loopfn ()
(loop for x from 0 to 3 do
(if (eq x 2)(return (list x)))))

打印 nil 的地方...

(defun loopfn ()
(loop for x from 0 to 2 do
(loop for y from 0 to 2 do
(if (eq x 2)(return (list x y))))))

我在打电话

(loopfn)

最佳答案

您的代码不打印任何内容。这也是您想要的 - 通常。

但是您希望函数返回一些有用的东西。

因此您需要了解打印和让 REPL 打印返回值之间的区别。

CL-USER > 3
3

以上返回 3。Read-Eval-Print-Loop 打印返回值。

CL-USER > (print 3)

3
3

上面打印了一个换行符,然后是 3 的两倍。为什么?第一个是 PRINT 调用的副作用,它打印换行符,然后打印它的参数。第二个是 REPL 打印返回值。

另请注意,EQ 不适用于数字比较。请改用 EQL。请参阅:http://www.lispworks.com/documentation/lw50/CLHS/Body/f_eql.htm

关于arrays - 打印数组 LISP 的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9254825/

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