1 ! Copyright (C) 2011 Doug Coleman.
2 ! See https://factorcode.org/license.txt for BSD license.
3 USING: accessors arrays classes classes.algebra
4 classes.algebra.private classes.private classes.union.private
8 TUPLE: maybe { class classoid initial: object read-only } ;
12 INSTANCE: maybe classoid
15 over [ class>> instance? ] [ 2drop t ] if ;
17 : maybe-class-or ( maybe -- classoid )
18 class>> \ f class-or ;
20 M: maybe normalize-class
23 M: maybe rank-class drop 6 ;
25 M: maybe (flatten-class)
26 maybe-class-or (flatten-class) ;
28 M: maybe union-of-builtins?
29 class>> union-of-builtins? ;
34 M: maybe predicate-def
35 class>> predicate-def [ [ t ] if* ] curry ;
37 M: maybe contained-classes