fb3a334a14f3

Refactor the shared variables copypasting
[view raw] [browse files]
author Steve Losh <steve@stevelosh.com>
date Mon, 18 Apr 2016 15:38:02 +0000
parents e45304805b40
children d8dc03903456
branches/tags (none)
files src/wam/compiler.lisp

Changes

--- a/src/wam/compiler.lisp	Mon Apr 18 15:29:53 2016 +0000
+++ b/src/wam/compiler.lisp	Mon Apr 18 15:38:02 2016 +0000
@@ -609,12 +609,13 @@
 (defun find-shared-variables (terms)
   "Return a list of all variables shared by two or more terms."
   (let* ((variables (remove-duplicates (tree-collect #'variable-p terms))))
-    (flet ((permanent-p (variable)
-             "Permanent variables are those contained in more than 1 term."
-             (> (count-if (curry #'tree-member-p variable)
-                          terms)
-                1)))
-      (remove-if-not #'permanent-p variables))))
+    (labels
+        ((count-uses (variable)
+           (count-if (curry #'tree-member-p variable)
+                     terms))
+         (shared-p (variable)
+           (> (count-uses variable) 1)))
+      (remove-if-not #'shared-p variables))))
 
 (defun find-permanent-variables (clause)
   "Return a list of all the 'permanent' variables in `clause`.