Advertisement
Guest User

Untitled

a guest
Apr 12th, 2019
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scheme 1.08 KB | None | 0 0
  1. (struct const      (val)      #:transparent)
  2. (struct variable   (name)         #:transparent)
  3. (struct op         (oper l r) #:transparent)
  4. (struct derivative (sym exp)  #:transparent)
  5.  
  6. (define (expr? exp)
  7.   (match exp
  8.     [(const val)        (number? val)]
  9.     [(variable name)    (symbol? name)]
  10.     [(derivative sym e) (and (eq? sym '∂)
  11.                              (expr? e))]
  12.     [(op oper l r)      (and (or (eq? oper '+) (eq? oper '*))
  13.                              (expr? l)
  14.                              (expr? r))]
  15.     [_                  false]))
  16.  
  17. ;;procedura zwracajaca pochodna wyrazenia
  18. (define (f)
  19.   (match f
  20.     [(const n)    (const 0)]
  21.     [(variable x) (const 1)]
  22.     [(op '+ f g)  (op '+ (f) (∂ g))]
  23.     [(op '* f g)  (op '+ (op '* (f) g)
  24.                       (op '* f (∂ g)))]))
  25.  
  26. (define (eval e val)
  27.   (match e
  28.     [(const n)           n]
  29.     [(derivative '∂ exp) (eval (exp) val)]
  30.     [(variable n)        val]
  31.     [(op '+ l r)         (+ (eval l val) (eval r val))]
  32.     [(op '* l r)         (* (eval l val) (eval r val))]))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement