I am trying to go through exercises of book SICM using the provided scheme code, however I could not figure out the reason for the error, I am quite novice in Scheme so can any one tell what am I missing here?
(define q (up (literal-function 'x)))
; This runs fine
(define ((Lagrangian-unknown m k) q) (+ (* 1/2 m (coordinate q) (coordinate q) ) (* 1/2 k (coordinate q) (coordinate q)) ))
(show-expression ((Lagrangian-unknown 'm 'k) ((Gamma q) 't)) ))
; This gives error
(define ((Lagrangian-unknown m k) q) (+ (* 1/2 m (coordinate q) (coordinate q) ) (* 1/2 k (coordinate q) ) ))
(show-expression ((Lagrangian-unknown 'm 'k) ((Gamma q) 't)) ))
In second iteration where I have just removed one term, I get following error
;Generic operator inapplicable: #[compiled-closure 12 (lambda "ghelper" #x3) #x625 #x2291fd5 ...] + (#(...) (*number* ...))
;To continue, call RESTART with an option number:
; (RESTART 1) => Return to read-eval-print level 1.
First of all, I can see you have unbalanced parenthesis when you call show-expression.
Do you want it to work? You must have the same type, you miss an up in the second addendum
(define ((Lagrangian-unknown m k) q) (+ (* 1/2 m (coordinate q) (coordinate q) ) (up (* 1/2 k (coordinate q) ) )))
But the next question is: does it make sense?
When you write (* (coordinate q) (coordinate q)) you are taking the product of two vectors. At most you could use the inner product (dot-product q q) or (square q) which returns a number.
Moreover, even if you use the dot-product or square, you can't add it to (coordinate q), because you are trying to sum a vector and a number.
For humans, vectors with one component and numbers are "almost" the same thing. On the other hand, for PCs they are two different things.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With