Я немного работаю с пакетом 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' не разрешается процедуре, а скорее число. – Sylwester
'test-path' - это функция, но когда вы вызываете' delta', он присваивается параметрам 'eta' и' q', а затем вы добавляете и умножаете их. – angus
Я думал, что [scmutils] (https://www.google.com/?q=scmutils) - это пакет, который должен быть запущен внутри схемы MIT (а не emacs) в Unix, как часть книги SICMechanichs. –