initial-value* ( class -- object ? ) - Factor Documentation

initial-value* ( class -- object ? )


Vocabulary
slots

Inputs
class an object


Outputs
object an object
? an object


Definition
IN: slots

GENERIC: initial-value* ( class -- object ? )


Methods
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>alist
] [ ] tri [ [ first2 nip ] dip instance? ] curry
find swap [ nip second t ] [ 2drop f f ] if
]
} cond ;


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

M: anonymous-union initial-value*
{
{ [ f over instance? ] [ drop f t ] }
{ [ 0 over instance? ] [ drop 0 t ] }
[
members>> sort-classes [ initial-value ] map>alist
?last [ second t ] [ f f ] if*
]
} cond ;


USING: classes kernel slots ;

M: class initial-value* drop f f ;


USING: classes.maybe kernel slots ;

M: maybe initial-value* drop f t ;


USING: classes.singleton slots ;

M: singleton-class initial-value* t ;


USING: classes.struct slots ;

M: struct-class initial-value* <struct> t ; inline


USING: classes.tuple kernel slots ;

M: tuple-class initial-value* new t ;


USING: classes sequences slots variants ;

M: variant-class initial-value*
class-members [ f f ] [ first initial-value* ] if-empty ;

AltStyle によって変換されたページ (->オリジナル) /