]> gitweb.factorcode.org Git - factor.git/blob - core/classes/predicate/predicate.factor
Initial import
[factor.git] / core / classes / predicate / predicate.factor
1 ! Copyright (C) 2004, 2007 Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: classes kernel namespaces words ;
4 IN: classes.predicate
5
6 PREDICATE: class predicate-class
7     "metaclass" word-prop predicate-class eq? ;
8
9 : predicate-quot ( class -- quot )
10     [
11         \ dup ,
12         dup superclass "predicate" word-prop %
13         "predicate-definition" word-prop , [ drop f ] , \ if ,
14     ] [ ] make ;
15
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 ;
20
21 M: predicate-class reset-class
22     {
23         "metaclass" "predicate-definition" "superclass"
24     } reset-props ;