Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scheme 球拍是否支持“内部”功能;定义“?”;?_Scheme_Racket_Sicp - Fatal编程技术网

Scheme 球拍是否支持“内部”功能;定义“?”;?

Scheme 球拍是否支持“内部”功能;定义“?”;?,scheme,racket,sicp,Scheme,Racket,Sicp,我是函数式语言的新手,我正在用Racket做SICP编程作业 下面是一段代码,Racket告诉我,define:函数体只需要一个表达式,但在第5行((define(yk))中发现了5个额外的部分: 我想这个问题与语言设置有关,但我已经使用了“高级”选项 有人知道如何正确配置Racket,或者内部“define”不受支持吗?事实上,正如您所说:高级语言不支持内部defines。对于使用SICP练习,我被告知最好使用neil/SICP软件包: 然而,即使是标准的Racket语言(#lang Rack

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

下面是一段代码,Racket告诉我,
define:函数体只需要一个表达式,但在第5行(
(define(yk)
)中发现了5个额外的部分:

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


有人知道如何正确配置Racket,或者内部“define”不受支持吗?

事实上,正如您所说:高级语言不支持内部
define
s。对于使用SICP练习,我被告知最好使用
neil/SICP
软件包:


然而,即使是标准的Racket语言(
#lang Racket
)也会支持内部
定义
而不会出现问题。

Chris是对的,内部定义在#lang Racket和neil/sicp中都受支持。如果您更喜欢使用高级教学语言(stepper是一个很棒的工具!)然后,您可以使用
local
创建内部本地定义。请参阅
(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))))