]> gitweb.factorcode.org Git - factor.git/blobdiff - extra/variants/variants.factor
stomp.cli: simplify
[factor.git] / extra / variants / variants.factor
index 3fd92e11f9ff0e6bbd6942f75f8d62c1550830ab..cdb38dabe449552b2fb15a9fc0fc0987189e811d 100644 (file)
@@ -1,4 +1,5 @@
-! (c)2009 Joe Groff bsd license
+! Copyright (C) 2009 Joe Groff.
+! See https://factorcode.org/license.txt for BSD license.
 USING: accessors arrays classes classes.mixin classes.parser
 classes.singleton classes.tuple classes.tuple.parser
 classes.union combinators inverse kernel lexer macros make
@@ -8,13 +9,13 @@ IN: variants
 PREDICATE: variant-class < mixin-class "variant?" word-prop ;
 
 M: variant-class initial-value*
-    members [ f f ] [
+    class-members [ f f ] [
         first dup word? [ t ] [ initial-value* ] if
     ] if-empty ;
 
 : define-tuple-class-and-boa-word ( class superclass slots -- )
     pick [ define-tuple-class ] dip
-    dup name>> "<" ">" surround create-in swap define-boa-word ;
+    dup name>> "<" ">" surround create-word-in swap define-boa-word ;
 
 : define-variant-member ( member -- class )
     dup array? [ first3 pick [ define-tuple-class-and-boa-word ] dip ] [ dup define-singleton-class ] if ;
@@ -50,12 +51,12 @@ SYNTAX: VARIANT:
 SYNTAX: VARIANT-MEMBER:
     scan-word
     scan-token parse-variant-member
-    define-variant-class-member ;
+    define-variant-class-member ";" expect ;
 
-MACRO: unboa ( class -- )
+MACRO: unboa ( class -- quot )
     <wrapper> \ boa [ ] 2sequence [undo] ;
 
-GENERIC# (match-branch) 1 ( class quot -- class quot' )
+GENERIC#: (match-branch) 1 ( class quot -- class quot' )
 
 M: singleton-class (match-branch)
     \ drop prefix ;
@@ -65,7 +66,6 @@ M: object (match-branch)
 : ?class ( object -- class )
     dup word? [ class-of ] unless ;
 
-MACRO: match ( branches -- )
+MACRO: match ( branches -- quot )
     [ dup callable? [ first2 (match-branch) 2array ] unless ] map
     [ \ dup \ ?class ] dip \ case [ ] 4sequence ;
-