tuple - Factor Documentation (original) (raw)

tuple

Vocabulary
kernel

Class description
The class of tuples. This class is further partitioned into disjoint subclasses; each tuple shape defined by TUPLE: is a new class.

Tuple classes have additional word properties:

"predicate" - a quotation which tests if the top of the stack is an instance of this tuple class
"slots" - a sequence of slot-spec instances
"layout" - an array with the tuple size and superclasses encoded in a format amneable to fast method dispatch

Definition

IN: kernel

BUILTIN: tuple ;

Methods

USING: classes classes.tuple io kernel serialize
serialize.private ;

M: tuple (serialize)
[
84 write1
[ class-of (serialize) ] [ add-object ]
[ tuple-slots (serialize) ] tri
] serialize-shared ;

USING: classes classes.tuple kernel prettyprint.backend
prettyprint.custom ;

M: tuple >pprint-sequence
[ class-of ] [ tuple-slots ] bi class-slot-sequence ;

USING: accessors db.tuples kernel ;

M: tuple >query swap >>tuple ;

USING: classes classes.tuple.private kernel kernel.private
slots.private words ;

M: tuple class-of layout-of 2 slot { word } declare ; inline

USING: kernel ;

M: tuple clone (clone) ; inline

USING: classes.tuple kernel ;

M: tuple equal? over tuple? [ tuple= ] [ 2drop f ] if ;

USING: classes debugger kernel ;

M: tuple error-help class-of ;

USING: debugger inspector kernel ;

M: tuple error. describe ;

USING: classes.tuple fuel.pprint kernel ;

M: tuple fuel-pprint tuple>array fuel-pprint ; inline

USING: classes.tuple kernel math ;

M: tuple hashcode* [ tuple-hashcode ] recursive-hashcode ;

USING: kernel prettyprint.backend prettyprint.custom ;

M: tuple pprint* pprint-tuple ;

USING: kernel prettyprint.custom ;

M: tuple pprint-delims drop \ T{ \ } ;

USING: kernel prettyprint.custom ;

M: tuple pprint-narrow? drop t ;

USING: bootstrap.image.private kernel ;

M: tuple prepare-object emit-tuple ;

USING: classes.tuple kernel match ;

M: tuple replace-patterns tuple>array replace-patterns >tuple ;

USING: classes classes.tuple kernel locals.rewrite make ;

M: tuple rewrite-element
dup rewrite-literal? [
[ tuple-slots rewrite-elements ] [ class-of ] bi
[ boa ] curry %
] [ , ] if ;

USING: classes.tuple kernel locals.rewrite ;

M: tuple rewrite-literal? tuple>array rewrite-literal? ;

USING: kernel locals.rewrite ;

M: tuple rewrite-sugar* rewrite-element ;

USING: json json.private kernel mirrors ;

M: tuple stream-write-json [ ] dip write-json-assoc ;

USING: accessors alien.strings kernel ;

M: tuple string>alien drop underlying>> ;

USING: kernel summary ;

M: tuple summary tuple-summary ;

USING: kernel mongodb.tuple.persistent
mongodb.tuple.persistent.private ;

M: tuple tuple>assoc (tuple>assoc) ;

USING: kernel mongodb.tuple.persistent
mongodb.tuple.persistent.private ;

M: tuple tuple>selector
prepare-assoc [ tuple>selector ] write-tuple-fields ;

USING: classes.tuple classes.tuple.private kernel sequences ;

M: tuple update-tuple
[ tuple-slots ] [ layout-of ] bi
[ permute-slots ] [ first ] bi slots>tuple ;