]> gitweb.factorcode.org Git - factor.git/blobdiff - extra/descriptive/descriptive.factor
factor: trim using lists
[factor.git] / extra / descriptive / descriptive.factor
index 5c6b5028f8b51ad56546ccd8984f864e42dc9866..bb3b3dd5746ea67159217c48f7e567660879ad98 100644 (file)
@@ -1,9 +1,9 @@
 ! Copyright (c) 2008 Daniel Ehrenberg.
 ! See http://factorcode.org/license.txt for BSD license.
-USING: words kernel sequences locals locals.parser fry
-locals.definitions accessors parser namespaces continuations
-summary definitions generalizations arrays prettyprint debugger io
-effects tools.annotations effects.parser ;
+USING: accessors arrays continuations debugger definitions
+effects effects.parser generalizations io kernel
+locals.definitions locals.parser prettyprint sequences
+sequences.generalizations tools.annotations words ;
 IN: descriptive
 
 ERROR: descriptive-error args underlying word ;
@@ -38,18 +38,25 @@ PRIVATE>
 SYNTAX: DESCRIPTIVE: (:) define-descriptive ;
 
 PREDICATE: descriptive < word
-    "descriptive-definition" word-prop ;
+    "descriptive-definition" word-prop >boolean ;
 
 M: descriptive definer drop \ DESCRIPTIVE: \ ; ;
 
 M: descriptive definition
     "descriptive-definition" word-prop ;
 
+M: descriptive reset-word
+    [ call-next-method ]
+    [ "descriptive-definition" remove-word-prop ] bi ;
+
 SYNTAX: DESCRIPTIVE:: (::) define-descriptive ;
 
-INTERSECTION: descriptive-lambda descriptive lambda-word ;
+PREDICATE: descriptive-lambda < descriptive lambda-word? ;
 
 M: descriptive-lambda definer drop \ DESCRIPTIVE:: \ ; ;
 
 M: descriptive-lambda definition
     "lambda" word-prop body>> ;
+
+M: descriptive-lambda reset-word
+    [ call-next-method ] [ "lambda" remove-word-prop ] bi ;