@@ -63,31 +63,31 @@ to (n) for some n"
6363 (let* ((zero (vamp :make-constant :const 0 ))
6464 (one (vamp :make-constant :const 1 ))
6565 (car (car (vamp :arguments obj)))
66- (cadr (cadr (vamp :arguments obj)))
67- (opcar (to-vampir-opt car ))
68- (opcadr (to-vampir-opt cadr ))
69- (const-check (const-check opcar opcadr)))
66+ (optcar (to-vampir-opt car )))
7067 (cond ((obj-equalp (vamp :func obj) :isZero )
71- (if const-check
72- (if (= (vamp :const opcar)
73- (vamp :const opcadr))
68+ (if (typep optcar ' vamp:constant)
69+ (if (zerop (vamp :const optcar))
7470 zero
75- one)))
71+ one)
72+ (geb.vampir :isZero optcar)))
7673 ((obj-equalp (vamp :func obj) :negative )
77- (if const-check
78- (if (< (vamp :const opcar)
79- (vamp :const opcadr))
80- zero
81- one)))
82- (t (mapcar ' to-vampir-opt (vamp :arguments obj))))))
74+ (let ((optcadr (to-vampir-opt (cadr (vamp :arguments obj)))))
75+ (if (typep optcadr ' vamp:constant)
76+ (if (< (vamp :const optcadr) 0 )
77+ zero
78+ one)
79+ (geb.vampir :negative car optcadr))))
80+ (t (vamp :make-application
81+ :func (vamp :func obj)
82+ :arguments (mapcar ' to-vampir-opt (vamp :arguments obj)))))))
8383
8484(defmethod to-vampir-opt ((obj vamp :constant))
8585 obj)
8686
8787(defmethod to-vampir-opt ((obj vamp :wire))
8888 obj)
8989
90- (defmethod to-vampir-opt ((obj geb.vampir.spec :infix))
90+ (defmethod to-vampir-opt ((obj vamp :infix))
9191 (let* ((lhs (vamp :lhs obj))
9292 (rhs (vamp :rhs obj))
9393 (oplhs (to-vampir-opt lhs))
0 commit comments