Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (struct const (val) #:transparent)
- (struct variable (name) #:transparent)
- (struct op (oper l r) #:transparent)
- (struct derivative (sym exp) #:transparent)
- (define (expr? exp)
- (match exp
- [(const val) (number? val)]
- [(variable name) (symbol? name)]
- [(derivative sym e) (and (eq? sym '∂)
- (expr? e))]
- [(op oper l r) (and (or (eq? oper '+) (eq? oper '*))
- (expr? l)
- (expr? r))]
- [_ false]))
- ;;procedura zwracajaca pochodna wyrazenia
- (define (∂ f)
- (match f
- [(const n) (const 0)]
- [(variable x) (const 1)]
- [(op '+ f g) (op '+ (∂ f) (∂ g))]
- [(op '* f g) (op '+ (op '* (∂ f) g)
- (op '* f (∂ g)))]))
- (define (eval e val)
- (match e
- [(const n) n]
- [(derivative '∂ exp) (eval (∂ exp) val)]
- [(variable n) val]
- [(op '+ l r) (+ (eval l val) (eval r val))]
- [(op '* l r) (* (eval l val) (eval r val))]))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement