anonymous-intersection


Vocabulary
classes.algebra.private

Definition
IN: classes.algebra.private

TUPLE: anonymous-intersection { participants read-only } ;


Methods
USING: accessors classes.algebra classes.algebra.private kernel
sequences ;

M: anonymous-intersection (classes-intersect?)
participants>> [ classes-intersect? ] with all? ;


USING: accessors assocs classes.algebra classes.algebra.private
classes.builtin classes.intersection.private kernel make
sequences ;

M: anonymous-intersection (flatten-class)
participants>>
[ full-cover ] [
[ flatten-class keys ] [ intersect-flattened-classes ]
map-reduce [ dup ,, ] each
] if-empty ;


USING: accessors classes.algebra.private prettyprint.custom ;

M: anonymous-intersection >pprint-sequence participants>> ;


USING: accessors classes.algebra.private
compiler.tree.propagation.simple sequences ;

M: anonymous-intersection add-depends-on-class
participants>> [ add-depends-on-class ] each ;


USING: accessors classes.algebra.private classes.private
sequences ;

M: anonymous-intersection class-name
participants>> [ class-name ] map " " join ;


USING: accessors classes.algebra.private generic ;

M: anonymous-intersection implementor-classes participants>> ;


USING: accessors assocs classes classes.algebra
classes.algebra.private combinators kernel sequences slots ;

M: anonymous-intersection initial-value*
{
{ [ f over instance? ] [ drop f t ] }
{ [ 0 over instance? ] [ drop 0 t ] }
[
[ ] [
participants>> sort-classes
[ initial-value ] { } map>assoc
] [ ] tri [ [ first2 nip ] dip instance? ] curry
find swap [ nip second t ] [ 2drop f f ] if
]
} cond ;


USING: accessors classes classes.algebra.private kernel
sequences ;

M: anonymous-intersection instance?
participants>> [ instance? ] with all? ;


USING: classes.algebra.private prettyprint.custom ;

M: anonymous-intersection pprint* pprint-object ;


USING: classes.algebra.private kernel prettyprint.custom ;

M: anonymous-intersection pprint-delims
drop \ intersection{ \ } ;


USING: classes.algebra.private classes.private kernel ;

M: anonymous-intersection rank-class drop 4 ;


USING: accessors classes.algebra classes.algebra.private
sequences ;

M: anonymous-intersection valid-classoid?
participants>> [ valid-classoid? ] all? ;


USING: classes.algebra.private classes.private
prettyprint.backend sequences ;

M: anonymous-intersection word-name*
class-name "intersection{ " " }" surround ;