Здесь ballthrown
правильно с отступом в соответствии с круглыми скобками.
(define (ballthrown v1 d1)
(let ((h (hozvec v1 (d2r d1)))
(v (vervec v1 (d2r d1)))
(let ((t (fftime v)))))
(dur h t))) ; v and let is never used
Теперь я только что ввел это в DrRacket и нажал CTRL + i и этопереместил let
прямо под v
, сказав мне, что let
является одним из привязываний, которые вы делаете во внешнем let
.Видите ли вы, что v
не может существовать в то время, когда v
оценивается так, как оно есть?
Возможно, вам не хватает закрывающих скобок во внешних let
и у вас слишком много во внутреннихlet
.Эти двое отменяют друг друга.Правильная версия была бы:
(define (ballthrown v1 d1)
(let ((h (hozvec v1 (d2r d1)))
(v (vervec v1 (d2r d1))))
(let ((t (fftime v)))
(dur h t))))
Я настоятельно призываю вас найти редактор, который соответствует скобкам или лучше, который соответствующим образом отступает от кода, чтобы вы могли легко видеть, когда вы делаете ошибки.