Advertisement
Guest User

Untitled

a guest
Apr 11th, 2019
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scheme 0.95 KB | None | 0 0
  1. (define (subst x v e)
  2.   (match e
  3.     [(op s l r)         (op s (subst x v l)
  4.                         (subst x v r))]
  5.     [(const n)          (const n)]
  6.     [(variable y)       (if (eq? x y)
  7.                         (const v)
  8.                         (variable y))]
  9.     [(derivative s exp) (derivative s (subst x v (exp)))]
  10.     [(let-expr y e1 e2)
  11.      (if (eq? x y)
  12.          (let-expr y
  13.                    (subst x v e1)
  14.                    e2)
  15.          (let-expr y
  16.                    (subst x v e1)
  17.                    (subst x v e2)))]))
  18.  
  19. ;; (gorliwa) ewaluacja wyrażenia w modelu podstawieniowym
  20.  
  21. (define (eval e)
  22.   (match e
  23.     [(const n)           n]
  24.     [(op '+ l r)         (+ (eval l) (eval r))]
  25.     [(op '* l r)         (* (eval l) (eval r))]
  26.     [(derivative '∂ exp) (eval (exp))]
  27.     [(let-expr x e1 e2)  (eval (subst x (eval e1) e2))]
  28.     [(variable n) (error n "cannot reference an identifier before its definition ;)")]))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement