factor/core/classes/builtin/builtin.factor

36 lines
973 B
Factor
Raw Normal View History

! Copyright (C) 2004, 2010 Slava Pestov.
2008-04-03 22:19:20 -04:00
! See http://factorcode.org/license.txt for BSD license.
USING: classes classes.algebra.private classes.private kernel
2012-07-19 12:50:09 -04:00
kernel.private make namespaces sequences words ;
2008-04-03 22:19:20 -04:00
IN: classes.builtin
SYMBOL: builtins
PREDICATE: builtin-class < class
"metaclass" word-prop builtin-class eq? ;
ERROR: not-a-builtin object ;
: check-builtin ( class -- )
dup builtin-class? [ drop ] [ not-a-builtin ] if ;
: class>type ( class -- n ) "type" word-prop ; foldable
2012-09-21 14:44:14 -04:00
: type>class ( n -- class ) builtins get-global nth ; foldable
2008-04-03 22:19:20 -04:00
: bootstrap-type>class ( n -- class ) builtins get nth ;
2011-10-24 07:47:42 -04:00
M: object class-of tag type>class ; inline
2008-05-02 03:51:38 -04:00
M: builtin-class rank-class drop 0 ;
M: builtin-class instance? [ tag ] [ class>type ] bi* eq? ;
2012-07-19 12:50:09 -04:00
M: builtin-class (flatten-class) dup ,, ;
M: builtin-class (classes-intersect?) eq? ;
2009-11-10 18:41:47 -05:00
: full-cover ( -- ) builtins get [ (flatten-class) ] each ;
M: anonymous-complement (flatten-class) drop full-cover ;