首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >申请不获批准的号码(计划)

申请不获批准的号码(计划)
EN

Stack Overflow用户
提问于 2015-04-01 19:13:40
回答 1查看 111关注 0票数 1

我正在使用实现MIT方案的SCMUTILS包进行一些工作。我正在用Emacs运行它,我在使用函数时遇到了麻烦,你能帮我吗?

我的代码是:

代码语言:javascript
复制
(define ((((delta eta) f) q) t)
  (let ((fmas (f (+ q (* 0.001 eta))))
         (efe (f q)))
       (/ (- (fmas t) (efe t)) 0.001)))


(define ((G q) t)
       (dot-product (q t) (q t)))


(((((delta  test-path) G)  test-path) 5))

其中测试路径是:

代码语言:javascript
复制
(define (test-path t)
 (up (+ (* 4 t) 7)
     (+ (* 3 t) 5)
     (+ (* 2 t) 1)))

我得到了一个错误:

代码语言:javascript
复制
Loading "mecanica"...
;Application of a number not allowed 2501.2500000000273 (())

有什么问题吗?

起初,我认为这个方案不能将像test-path这样的结构除以一个数字,所以我将点积设置为返回一个数字的函数,但这是行不通的。

我尝试在delta-eta函数中打印表达式,在执行此部分时出现了错误:

代码语言:javascript
复制
(/ (- (fmas t) (efe t)) 0.001)))

如果我去掉商部分,就没有错误。

我肯定漏掉了什么。希望你能帮上忙。谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-03 20:48:59

假设这

代码语言:javascript
复制
(define ((((delta eta) f) q) t)
  (let ((fmas (f (+ q (* 0.001 eta))))
         (efe (f q)))
       (/ (- (fmas t) (efe t)) 0.001)))

与此等价

代码语言:javascript
复制
(define (delta eta)
  (lambda (f)
    (lambda (q)
      (lambda (t)
        (let ((fmas (f (+ q (* 0.001 eta))))
              (efe (f q)))
          (/ (- (fmas t) (efe t)) 0.001))))))

然后(((((delta test-path) G) test-path) 5))(* 0.001 eta)0.001test-path相乘。同样在G内部,它期望q作为一个过程,然而,fmas正在从G检索一个过程,将一个数字传递给G。因此,这将尝试应用传递t的计算数字。

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

https://stackoverflow.com/questions/29398949

复制
相关文章

相似问题

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