Advertisement
Guest User

Untitled

a guest
Nov 27th, 2014
156
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lisp 1.19 KB | None | 0 0
  1. Dobrý den,
  2. nestačilo by místo té vaší obludnosti například
  3.  
  4. (defmethod simplify ((expr binary-expression))
  5.   (if (and (typep (expr-1 expr) 'const)
  6.            (typep (expr-2 expr) 'const))
  7.      (parse (funcall (bin-expr-symbol expr)
  8.                              (value (expr-1 expr))
  9.                              (value (expr-2 expr)))))...)
  10.  
  11. Jen by se pak musely mírně upravit zděděné metody, např.
  12.  
  13. (defmethod simplify ((expr +-expr))
  14.   (let ((result (call-next-method)))
  15.     (if (typep result '+-expr)
  16.         (let*
  17.             ((expr-1 (slot-value result 'expr-1))
  18.              (expr-2 (slot-value result 'expr-2)))
  19.           (cond ((zero-const-p expr-1) expr-2)
  20.                 ((zero-const-p expr-2) expr-1)
  21.                 (t result)))
  22.       result)))
  23.  
  24. Příklad 8.17 byl měl umožnit pracovat s derivacemi stejně jako se součty, rozdíly, součiny, ... Zatím jsme s nimi pracovali jako s operací s výrazy, která se hned provede. My bychom ale chtěli, aby derivace byly výraz, se kterým se bude dát pracovat a který se vypočítá až při pokusu o zjednodušení pomocí simplify.
  25.  
  26. Píšu vám 2 body za první část úkolů..
  27.  
  28. S pozdravem
  29.  
  30. Tomáš Kühr
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement