On Aug 24, 2011, at 6:50 PM, Andrew Pennebaker wrote: > Is there a word more general than firstn? I'd like to push all the elements > of a sequence onto the stack.
Asking for a function that pushes all the elements of an arbitrary sequence
onto the stack is like asking for an [a] -> (a,a,a,...) function in Haskell.
The stack in Factor is an abstract notational convenience akin to function
composition (or more generally, arrows), not a real place. firstn is a macro;
the expression "5 firstn" is evaluated at compile time and replaced in-line by
a ( seq -- x x x x x ) function; this still only works when the value 5 is
known at compile time.
Guessing from your previous post, you're probably trying to turn this:
[ even? ] { gen-integer } check
into something like:
{ t } [ 1,000 [ gen-integer ] replicate [ even? not ] find drop not ]
unit-test
You'd do this as a macro. Macros are functions from their compile-time
arguments to a quotation. Something like this (not tested):
MACRO: check ( predicates generators -- quot )
[ swap '[ { t } [ 1,000 [ _ execute( -- x ) ] replicate [ @ not ] find
drop not ] unit-test ] ] with map concat ;
-Joe
smime.p7s
Description: S/MIME cryptographic signature
------------------------------------------------------------------------------ EMC VNX: the world's simplest storage, starting under $10K The only unified storage solution that offers unified management Up to 160% more powerful than alternatives and 25% more efficient. Guaranteed. http://p.sf.net/sfu/emc-vnx-dev2dev
_______________________________________________ Factor-talk mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/factor-talk
