WIP: adding in the simplify stuff back into the new logic stuff

This commit is contained in:
Paul deGrandis 2012-03-19 16:12:19 -04:00
parent 21a0d9dcf7
commit e738d100c6

View file

@ -17,17 +17,25 @@
(guard expr)) (guard expr))
(check-guards expr rest))) (check-guards expr rest)))
(defn simplify (defn simplify-one
[expr rules] ([expr]
(first (run* [q] (simplify-one expr all-rules))
(fresh [pat guards alt] ([expr rules]
(membero [pat guards alt] rules) (first (run* [q]
(== pat expr) (fresh [pat guards alt]
(check-guards expr guards) (membero [pat guards alt] rules)
(== q {:expr expr (== pat expr)
:alt alt (check-guards expr guards)
:line (-> expr meta :line)}))))) (== q {:expr expr
:alt alt
:line (-> expr meta :line)}))))))
(declare expr-seq)
(defn simplify
([expr]
(simplify expr all-rules))
([expr rules]
(walk/postwalk identity (expr-seq expr))))
;; Reading source files ;; Reading source files
;; -------------------- ;; --------------------