Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (define (subst x v e)
- (match e
- [(op s l r) (op s (subst x v l)
- (subst x v r))]
- [(const n) (const n)]
- [(variable y) (if (eq? x y)
- (const v)
- (variable y))]
- [(derivative s exp) (derivative s (subst x v (∂ exp)))]
- [(let-expr y e1 e2)
- (if (eq? x y)
- (let-expr y
- (subst x v e1)
- e2)
- (let-expr y
- (subst x v e1)
- (subst x v e2)))]))
- ;; (gorliwa) ewaluacja wyrażenia w modelu podstawieniowym
- (define (eval e)
- (match e
- [(const n) n]
- [(op '+ l r) (+ (eval l) (eval r))]
- [(op '* l r) (* (eval l) (eval r))]
- [(derivative '∂ exp) (eval (∂ exp))]
- [(let-expr x e1 e2) (eval (subst x (eval e1) e2))]
- [(variable n) (error n "cannot reference an identifier before its definition ;)")]))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement