gpt4 book ai didi

lisp - 为什么我在 Elisp 中索引列表时遇到问题?

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

我一直在玩 ELisp,并且在我的代码中再次出现了一个奇怪的错误

我得到的错误是:

  Debugger entered--Lisp error: (error "Bad bounding indices: 2, 3")
signal(error ("Bad bounding indices: 2, 3"))
error("%s" "Bad bounding indices: 2, 3")
subseq((quote (2 2 2 2)) 2 3)
(matrix-from-values 1 number-of-columns-on-output (subseq (nth 2 matrix) (+ (* row-index number-of-columns-on-input) start-column) (+ (* row-index number-of-columns-on-input) end-column)))
(let ((number-of-columns-on-input (nth 1 matrix)) (number-of-columns-on-output (- end-column start-column)) (row-index (- row 1))) (matrix-from-values 1 number-of-columns-on-output (subseq (nth 2 matrix) (+ (* row-index number-of-columns-on-input) start-column) (+ (* row-index number-of-columns-on-input) end-column))))
matrix-extract-subrow((2 2 (quote (2 2 2 2))) 1 2 3)
[..more stuff..]

很可能我没有正确读取错误,但据我了解,解释器从内到外评估我的函数(“(矩阵..[blah-blah]”东西)并绊倒:

  subseq((quote (2 2 2 2)) 2 3)

但是,如果我进入 *scratch* 缓冲区并运行:

(subseq (quote (2 2 2 2)) 2 3)

运行正常

最佳答案

您混淆了表达式。在源代码中您编写表达式,而在上面的调试器输出中您看到的是值。 eval 获取一个表达式并返回相应的值,而 quote 可用于获取一个值并将其转换回仅返回该值的(普通)表达式。

所以当你看到 subseq((quote (2 2 2 2)) 2 3) 时,这意味着 subseq 被调用了一个值 (quote (2 2 2 2)),例如通过计算 (quote (quote (2 2 2 2))) 等表达式获得。

你剥离了其余的回溯,但看看

matrix-extract-subrow((2 2 (quote (2 2 2 2))) 1 2 3)

好像你有类似的地方

... '(2 2 '(2 2 2 2)) ...

应该是什么

... '(2 2 (2 2 2 2)) ..

相反。

关于lisp - 为什么我在 Elisp 中索引列表时遇到问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46946942/

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