首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么方案函数中出现了“泛型运算符在应用”的错误

为什么方案函数中出现了“泛型运算符在应用”的错误
EN

Stack Overflow用户
提问于 2022-08-13 00:34:06
回答 1查看 78关注 0票数 3

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

代码语言:javascript
复制
(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)) ))

在第二次迭代中,我刚刚删除了一个项,我得到了以下错误

代码语言:javascript
复制
;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.
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-24 08:08:56

首先,当您调用show-expression时,我可以看到您有不平衡的括号。

你想让它起作用吗?你必须有相同的类型,你错过了第二个增编中的up

代码语言:javascript
复制
(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)中,因为您试图将一个向量和一个数字相加。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73340838

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档