]> gitweb.factorcode.org Git - factor.git/commitdiff
more generic work
authorSlava Pestov <slava@factorcode.org>
Sat, 11 Dec 2004 23:27:02 +0000 (23:27 +0000)
committerSlava Pestov <slava@factorcode.org>
Sat, 11 Dec 2004 23:27:02 +0000 (23:27 +0000)
library/generic.factor

index c12dd31f0da52884130df8fbfa43608c5e469e94..3c625e705c4275032f49fb908640e3b88de261aa 100644 (file)
@@ -145,8 +145,17 @@ SYMBOL: delegate
     #! traits type.
     scan-word [ constructor-word ] keep [ (;C) ] [ ] ; parsing
 
+: (;M) ( type generic definition -- )
+    pick builtin-type [
+        rot "builtin-type" word-property
+        rot "vtable" word-property
+        set-vector-nth
+    ] [
+        rot traits-map [ put ] bind
+    ] ifte ;
+
 : M: ( -- type generic [ ] )
     #! M: foo bar begins a definition of the bar generic word
     #! specialized to the foo type.
-    scan-word scan-word [ rot traits-map [ put ] bind ] [ ] ;
+    scan-word scan-word [ (;M) ] [ ] ;
     parsing