factor/core/classes/predicate/predicate.factor

25 lines
739 B
Factor
Raw Normal View History

2008-03-26 19:23:19 -04:00
! Copyright (C) 2004, 2008 Slava Pestov.
2007-09-20 18:09:08 -04:00
! See http://factorcode.org/license.txt for BSD license.
USING: classes kernel namespaces words ;
IN: classes.predicate
2008-03-26 19:23:19 -04:00
PREDICATE: predicate-class < class
2007-09-20 18:09:08 -04:00
"metaclass" word-prop predicate-class eq? ;
: predicate-quot ( class -- quot )
[
\ dup ,
dup superclass "predicate" word-prop %
"predicate-definition" word-prop , [ drop f ] , \ if ,
] [ ] make ;
2008-03-26 19:23:19 -04:00
: define-predicate-class ( class superclass definition -- )
2008-03-28 23:59:48 -04:00
>r dupd f 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 ;