/core/classes/builtin/builtin.factor

http://github.com/abeaumont/factor · Factor · 30 lines · 16 code · 12 blank · 2 comment · 3 complexity · b04448f8e4a5ee36b80d945776e832cd MD5 · raw file

  1. ! Copyright (C) 2004, 2010 Slava Pestov.
  2. ! See http://factorcode.org/license.txt for BSD license.
  3. USING: classes classes.algebra.private classes.private kernel
  4. kernel.private make namespaces sequences words ;
  5. IN: classes.builtin
  6. SYMBOL: builtins
  7. PREDICATE: builtin-class < class
  8. "metaclass" word-prop builtin-class eq? ;
  9. : class>type ( class -- n ) "type" word-prop ; foldable
  10. : type>class ( n -- class ) builtins get-global nth ; foldable
  11. : bootstrap-type>class ( n -- class ) builtins get nth ;
  12. M: object class-of tag type>class ; inline
  13. M: builtin-class rank-class drop 0 ;
  14. M: builtin-class instance? [ tag ] [ class>type ] bi* eq? ;
  15. M: builtin-class (flatten-class) dup ,, ;
  16. M: builtin-class (classes-intersect?) eq? ;
  17. : full-cover ( -- ) builtins get [ (flatten-class) ] each ;
  18. M: anonymous-complement (flatten-class) drop full-cover ;