我是功能语言的新手,我正在使用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”?
答案 0 :(得分:7)
实际上,正如您所说:高级语言不支持内部define
。对于使用SICP练习,我被告知最好使用neil/sicp
包:instructions for using this are detailed here。
但是,即使是标准的Racket语言(#lang racket
)也会毫无问题地支持内部define
。