Я немного работаю с пакетом SCMUTILS, который реализует MIT SCHEME. Я запускаю его из Emacs, и у меня возникают проблемы при использовании функции, вы можете мне помочь?
Мой код:
(define ((((delta eta) f) q) t)
(let ((fmas (f (+ q (* 0.001 eta))))
(efe (f q)))
(/ (- (fmas t) (efe t)) 0.001)))
(define ((G q) t)
(dot-product (q t) (q t)))
(((((delta test-path) G) test-path) 5))
Где тестовый путь:
(define (test-path t)
(up (+ (* 4 t) 7)
(+ (* 3 t) 5)
(+ (* 2 t) 1)))
И я получаю эту ошибку:
Loading "mecanica"...
;Application of a number not allowed 2501.2500000000273 (())
В чем может быть проблема?
Сначала я подумал, что эта схема не может разделить структуру типа test-path
на число, поэтому я добавил скалярное произведение, чтобы сделать функцию, возвращающую число; но это не сработало.
Я попытался напечатать выражение в функции delta-eta
, и при выполнении этой части возникает ошибка:
(/ (- (fmas t) (efe t)) 0.001)))
А если вычесть частное, ошибки нет.
Наверняка я что-то упускаю. Надеюсь, вы можете помочь. Спасибо!
up
,efe
,dot-product
иfmas
? Ошибка проста. В какой-то момент вы делаете(some-var ...)
, гдеsome-var
преобразуется не в процедуру, а в число. - person Sylwester   schedule 02.04.2015test-path
— это функция, но когда вы вызываетеdelta
, ей присваиваются параметрыeta
иq
, а затем вы их складываете и умножаете. - person angus   schedule 02.04.2015