1 ! Copyright (C) 2004, 2007 Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: classes kernel namespaces words ;
6 PREDICATE: class predicate-class
7 "metaclass" word-prop predicate-class eq? ;
9 : predicate-quot ( class -- quot )
12 dup superclass "predicate" word-prop %
13 "predicate-definition" word-prop , [ drop f ] , \ if ,
16 : define-predicate-class ( superclass class definition -- )
17 >r dup f roll predicate-class define-class r>
18 dupd "predicate-definition" set-word-prop
19 dup predicate-word over predicate-quot define-predicate ;
21 M: predicate-class reset-class
23 "metaclass" "predicate-definition" "superclass"