3

我是函数式语言的新手,我正在使用 Racket 进行 SICP 编程作业。

下面是一段代码,Racketdefine: expected only one expression for the function body, but found 5 extra parts在第 5 行 ( (define (y k)) 中告诉我:

(define (simpson f a b n)

 (define h (/ (- b a) n))

 (define (y k)
  (f (+ a (* k h))))

 (define (factor k)
  (cond ((or (= k 0) (= k n))
         1)
   ((odd? k)
    4)
   (else
    2)))

 (define (term k)
  (* (factor k)
   (y k)))

 (define (next k)
  (+ k 1))

(if (not (even? n))
 (error "n can't be odd")
 (* (/ h 3)
  (sum term (exact->inexact a) next n))))

我猜这个问题与语言设置有关,但我已经使用了“高级”选项。

有人知道如何正确配置 Racket,还是不支持内部“定义”?

4

1 回答 1

7

确实,正如您所说:define高级语言不支持 internal 。对于 SICP 练习,我被告知最好使用该neil/sicp软件包:此处详细介绍了使用说明

但是,即使是标准的 Racket 语言 ( ) 也可以毫无问题地#lang racket支持 internal s。define

于 2012-10-27T12:49:47.393 回答