Racket是否支持内部“定义”?

时间:2012-10-27 12:25:35

标签: scheme racket sicp

我是功能语言的新手,我正在使用Racket进行SICP编程任务。

下面是一段代码,Racket在第5行(define: expected only one expression for the function body, but found 5 extra parts)告诉我(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,还是不支持内部“define”?

1 个答案:

答案 0 :(得分:7)

实际上,正如您所说:高级语言不支持内部define。对于使用SICP练习,我被告知最好使用neil/sicp包:instructions for using this are detailed here

但是,即使是标准的Racket语言(#lang racket)也会毫无问题地支持内部define