gpt4 book ai didi

scheme - 为什么我在 Scheme 函数中出现 `Generic operator inapplicable` 错误

转载 作者:行者123 更新时间:2023-12-05 05:36:10 25 4
gpt4 key购买 nike

我正在尝试使用提供的方案代码完成 SICM 一书的练习,但是我无法找出错误的原因,我在 Scheme 方面是新手,所以有人能告诉我我在这里遗漏了什么吗?

(define q (up (literal-function 'x)))

; This runs fine
(define ((Lagrangian-unknown m k) q) (+ (* 1/2 m (coordinate q) (coordinate q) ) (* 1/2 k (coordinate q) (coordinate q)) ))
(show-expression ((Lagrangian-unknown 'm 'k) ((Gamma q) 't)) ))

; This gives error
(define ((Lagrangian-unknown m k) q) (+ (* 1/2 m (coordinate q) (coordinate q) ) (* 1/2 k (coordinate q) ) ))
(show-expression ((Lagrangian-unknown 'm 'k) ((Gamma q) 't)) ))

在我刚刚删除一个术语的第二次迭代中,出现以下错误

;Generic operator inapplicable: #[compiled-closure 12 (lambda "ghelper" #x3) #x625 #x2291fd5 ...] + (#(...) (*number* ...))
;To continue, call RESTART with an option number:
; (RESTART 1) => Return to read-eval-print level 1.

最佳答案

首先,我看到你在调用 show-expression 时括号不平衡。

你想让它工作吗?你必须有相同的类型,你错过了第二个附录中的 up

(define ((Lagrangian-unknown m k) q) (+ (* 1/2 m (coordinate q) (coordinate q) ) (up (* 1/2 k (coordinate q) ) )))

但下一个问题是:它有意义吗?当您编写 (* (coordinate q) (coordinate q)) 时,您正在计算两个向量的乘积。您最多可以使用返回数字的内积 (dot-product q q)(square q)

此外,即使你使用dot-productsquare,你也不能将它添加到(coordinate q),因为您正在尝试对一个向量和一个数字求和。

对于人类来说,具有一个分量和数字的向量“几乎”是同一件事。另一方面,对于 PC,它们是两种不同的东西。

关于scheme - 为什么我在 Scheme 函数中出现 `Generic operator inapplicable` 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73340838/

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