factor/core/classes/predicate/predicate.factor

25 lines
741 B
Factor
Raw Normal View History

2007-09-20 18:09:08 -04:00
! Copyright (C) 2004, 2007 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
USING: classes kernel namespaces words ;
IN: classes.predicate
PREDICATE: class predicate-class
"metaclass" word-prop predicate-class eq? ;
: predicate-quot ( class -- quot )
[
\ dup ,
dup superclass "predicate" word-prop %
"predicate-definition" word-prop , [ drop f ] , \ if ,
] [ ] make ;
: define-predicate-class ( superclass class definition -- )
>r dup f roll predicate-class define-class r>
dupd "predicate-definition" set-word-prop
dup predicate-quot define-predicate ;
2007-09-20 18:09:08 -04:00
M: predicate-class reset-class
{
"metaclass" "predicate-definition" "superclass"
} reset-props ;