作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用提供的方案代码完成 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-product
或square
,你也不能将它添加到(coordinate q)
,因为您正在尝试对一个向量和一个数字求和。
对于人类来说,具有一个分量和数字的向量“几乎”是同一件事。另一方面,对于 PC,它们是两种不同的东西。
关于scheme - 为什么我在 Scheme 函数中出现 `Generic operator inapplicable` 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73340838/
我正在尝试使用提供的方案代码完成 SICM 一书的练习,但是我无法找出错误的原因,我在 Scheme 方面是新手,所以有人能告诉我我在这里遗漏了什么吗? (define q (up (literal-
我是一名优秀的程序员,十分优秀!