tuple-arrays: initial-values can be reused here to create the tuple
array sequencedb4
parent
9c0d5cf34d
commit
81ad3e21cb
|
@ -1,8 +1,8 @@
|
|||
! Copyright (C) 2009, 2010 Slava Pestov.
|
||||
! See http://factorcode.org/license.txt for BSD license.
|
||||
USING: accessors arrays combinators.smart fry functors kernel
|
||||
kernel.private macros sequences combinators sequences.private
|
||||
stack-checker parser math classes.tuple classes.tuple.private ;
|
||||
USING: accessors arrays classes.tuple classes.tuple.private
|
||||
combinators combinators.smart fry functors kernel macros math parser
|
||||
sequences sequences.private ;
|
||||
FROM: inverse => undo ;
|
||||
IN: tuple-arrays
|
||||
|
||||
|
@ -14,12 +14,6 @@ MACRO: boa-unsafe ( class -- quot ) tuple-layout '[ _ <tuple-boa> ] ;
|
|||
|
||||
: tuple-arity ( class -- quot ) '[ _ boa ] inputs ; inline
|
||||
|
||||
: smart-tuple>array ( tuple class -- array )
|
||||
'[ [ _ boa ] undo ] output>array ; inline
|
||||
|
||||
: tuple-prototype ( class -- array )
|
||||
[ new ] [ smart-tuple>array ] bi ; inline
|
||||
|
||||
: tuple-slice ( n seq -- slice )
|
||||
[ n>> [ * dup ] keep + ] [ seq>> ] bi <slice-unsafe> ; inline
|
||||
|
||||
|
@ -60,7 +54,7 @@ TUPLE: CLASS-array
|
|||
{ length array-capacity read-only } ;
|
||||
|
||||
: <CLASS-array> ( length -- tuple-array )
|
||||
[ \ CLASS [ tuple-prototype <repetition> concat ] [ tuple-arity ] bi ] keep
|
||||
[ \ CLASS [ initial-values <repetition> concat ] [ tuple-arity ] bi ] keep
|
||||
\ CLASS-array boa ; inline
|
||||
|
||||
M: CLASS-array length length>> ; inline
|
||||
|
|
|
@ -419,6 +419,10 @@ HELP: tuple>array
|
|||
{ $values { "tuple" tuple } { "array" array } }
|
||||
{ $description "Outputs an array having the tuple's slots as elements. The first element is the tuple class word and remainder are declared slots." } ;
|
||||
|
||||
HELP: initial-values
|
||||
{ $values { "class" class } { "seq" sequence } }
|
||||
{ $description "Gets a sequence with the initial value for each tuple slot." } ;
|
||||
|
||||
HELP: <tuple>
|
||||
{ $values { "layout" "a tuple layout array" } { "tuple" tuple } }
|
||||
{ $description "Low-level tuple constructor. User code should never call this directly, and instead use " { $link new } "." } ;
|
||||
|
|
Loading…
Reference in New Issue