]> gitweb.factorcode.org Git - factor-unmaintained.git/blobdiff - multi-method-syntax/multi-method-syntax.factor
unmaintained: New home for misfit Factor vocabularies.
[factor-unmaintained.git] / multi-method-syntax / multi-method-syntax.factor
diff --git a/multi-method-syntax/multi-method-syntax.factor b/multi-method-syntax/multi-method-syntax.factor
new file mode 100644 (file)
index 0000000..4a5cc7c
--- /dev/null
@@ -0,0 +1,23 @@
+
+USING: accessors effects.parser kernel lexer multi-methods
+       parser sequences words ;
+
+IN: multi-method-syntax
+
+! A nicer specializer syntax to hold us over till multi-methods go in
+! officially.
+!
+! Use both 'multi-methods' and 'multi-method-syntax' in that order.
+
+: scan-specializer ( -- specializer )
+
+  scan drop ! eat opening parenthesis
+
+  ")" parse-effect in>> [ search ] map ;
+
+: CREATE-METHOD ( -- method )
+  scan-word scan-specializer swap create-method-in ;
+
+: (METHOD:) ( -- method def ) CREATE-METHOD parse-definition ;
+
+: METHOD: (METHOD:) define ; parsing