if you want to keep the "quot { gen1 gen2 ... }" style of declaration,
you can use and modify the following macro:
USING: combinators.smart fry kernel macros math sequences
namespaces ;
IN: forall
: gen-integer ( -- seq ) { 42 } ;
: gen-even ( -- seq ) { 44 } ;
: gen-odd ( -- seq ) { 43 } ;
MACRO: for-all ( quot seq -- quot )
swap '[ [ execute _ all? ] curry ] map '[ _ 0&& ] ;
: foo ( -- f ) [ even? ] { gen-integer gen-odd } for-all ;
: bar ( -- t ) [ even? ] { gen-integer gen-even } for-all ;
you could also save the generator if it fails in a variable in the
for-all macro for later user (eg printing)
Jon
On Thu, Aug 25, 2011 at 9:34 AM, Andrew Pennebaker
<[email protected]> wrote:
> Aha! How could I rewrite for-all? so that it prints the first stack that
> fails the predicate?
> Cheers,
> Andrew Pennebaker
> www.yellosoft.us
> On Thu, Aug 25, 2011 at 1:11 AM, Joe Groff <[email protected]> wrote:
>>
>> On Aug 24, 2011, at 10:05 PM, Andrew Pennebaker wrote:
>>
>> Joe, your for-all? looks promising (and it's incredibly short). However,
>> when I try it, I'm still getting that macro error.
>>
>> In your "main" you missed the [ ] around prop-even. This line:
>> https://github.com/mcandre/factcheck/blob/master/example.factor#L12
>> should read:
>> [ prop-even ] [ gen-even ] for-all? .
>> -Joe
>>
>> ------------------------------------------------------------------------------
>> 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
>>
>
>
> ------------------------------------------------------------------------------
> 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
>
>
------------------------------------------------------------------------------
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