The easiest way to understand fried quotations is to look at some examples.
If a quotation does not contain any fry specifiers, then
'[ behaves just like
[ :
{ 10 20 30 } '[ . ] each
Occurrences of
_ on the left map directly to
curry . That is, the following three lines are equivalent:
{ 10 20 30 } 5 '[ _ + ] map
{ 10 20 30 } 5 [ + ] curry map
{ 10 20 30 } [ 5 + ] map
Occurrences of
_ in the middle of a quotation map to more complex quotation composition patterns. The following three lines are equivalent:
{ 10 20 30 } 5 '[ 3 _ / ] map
{ 10 20 30 } 5 [ 3 ] swap [ / ] curry compose map
{ 10 20 30 } [ 3 5 / ] map
Occurrences of
@ are simply syntax sugar for
_ call . The following four lines are equivalent:
{ 10 20 30 } [ sq ] '[ @ . ] each
{ 10 20 30 } [ sq ] [ call . ] curry each
{ 10 20 30 } [ sq ] [ . ] compose each
{ 10 20 30 } [ sq . ] each
The
_ and
@ specifiers may be freely mixed, and the result is considerably more concise and readable than the version using
curry and
compose directly:
{ 8 13 14 27 } [ even? ] 5 '[ @ dup _ ? ] map
{ 8 13 14 27 } [ even? ] 5 [ dup ] swap [ ? ] curry compose compose map
{ 8 13 14 27 } [ even? dup 5 ? ] map
The following is a no-op:
'[ @ ]
Here are some built-in combinators rewritten in terms of fried quotations:
This documentation was generated offline from a
load-all
image. If you want, you can also
browse the documentation from within the UI developer tools . See
the Factor website
for more information.
Factor 0.101 x86.64 (2285, heads/master-efda6dad2f, Nov 20 2024 16:02:37)