【问题标题】:Scheme and let syntaxScheme 和 let 语法
【发布时间】:2010-03-04 03:53:35
【问题描述】:
 (define (Integral f a b N)  
    ;define h as a constant
    (let((h (/ (- b a) N))))       
     (define (Term n)   
      (* (/ h 3) (+ (* 2 (f (+ a (* 2 (* n h)))))   
            (* 4 (f (+ a (* 2 (* (- n 1) h)))))  
            )  
     ))  
     (+ (* (/ h 3) (+ (f a) (f b))) (sum Term a next (/ N 2.0))))  

此代码产生错误 r5rs:body:body 中没有表达式:(r5rs:body) 你能帮忙吗?

【问题讨论】:

  • 您的 let 语句似乎有太多括号。它们似乎在 let 行上是平衡的,因此将关闭 let 语句,将下一个定义留给独立。根据格式,我不确定这是否是您想要的。

标签: scheme


【解决方案1】:

你在 let 之后放错了大括号。在 let 中定义常量后,使用该常量的代码必须在 let's 范围内。因此,您关于缺少表达式主体的错误。

以下是更正后的代码:

(define (Integral f a b N)
  ; define h as a constant
  (let ((h (/ (- b a) N)))
    (define (Term n)
      (* (/ h 3) (+ (* 2 (f (+ a (* 2 (* n h)))))
                    (* 4 (f (+ a (* 2 (* (- n 1) h))))))))

    (+ (* (/ h 3) (+ (f a) (f b))) (sum Term a next (/ N 2.0)))))

顺便说一句,您仍然需要定义 sum 函数。

【讨论】:

  • 谢谢!!你为我节省了很多浪费的时间。这是我第一次让表达!仅供参考,对于 sum 我正在使用 ; 给出两个函数 term ,接下来我们可以计算范围 a 到 b 中的 sum (define (sum term a next b) (if (> a b) 0 (+ (term a) (sum term (下一个) 下一个 b))))
猜你喜欢
  • 2011-12-23
  • 2013-09-22
  • 2013-02-06
  • 2015-06-19
  • 1970-01-01
  • 1970-01-01
  • 2017-05-22
  • 2023-03-30
  • 1970-01-01
相关资源
最近更新 更多