我刚在当地一所大学开始学习计算机科学,一切都很顺利,但我似乎不明白为什么这段代码(在PPT演示中呈现给我)会给我带来错误,因为这是我的教授在课堂上向我们展示的。重点是让火箭从场景的底部开始,在顶部停止,但我在定义H0、定义H10、(-500(*3t))的行中不断得到这些函数错误。代码如下:
(require 2htdp/image)
(require 2htdp/universe)
(define width 500)
(define height 500)
(define e-scene(empty-scene width height))
(define rocket (image))
(define rocket-x(/ width 2))
(define H0 (-500(* 3 0)))
(define H10 (-500(* 3 10)))
(check-expect(height 0) H0)
(check-expect(height 10)H10)
(define(altitude t)
(-500(*3 t)))
(define img0 (place-image rocket rocket-x (height 0)e-scene))
(define img45 (place-image rocket rocket-x (height 45) e-scene))
(check-expect(create-rocket-scene 0)img0)
(check-expect(create-rocket-scene 45)img45)
(define (create-rocket-scene t)
(place-image rocket rocket-x(height t)e-scene))
(animate create-rocket-scene)
每个Scheme列表表达式应该如下所示:(procedure arg1 arg2 ...)
。
表达式(define H0 (-500(* 3 0)))
被读取为(define H0 (-500 (* 3 0)))
,而-500
不是过程(函数),因此它抛出错误。表达式(define H10 (-500(* 3 10)))
也有同样的问题。
只需将这两行重写为(define H0 (- 500 (* 3 0)))
和(define H10 (- 500 (* 3 10)))
,并在其他表达式中添加空格——也许它们有效,但现在很难阅读。