Higher-order functions: Difference between revisions

Content added Content deleted
(→‎{{header|Quackery}}: improved flattening a nest from O(n^2) to O(log n))
(→‎{{header|Quackery}}: simplified fold)
Line 3,525: Line 3,525:
First define the higher order functions <code>fold</code>, <code>map</code>, and <code>filter</code>.
First define the higher order functions <code>fold</code>, <code>map</code>, and <code>filter</code>.


<pre> [ stack ] is fold.act ( --> s )
<pre> [ over [] = iff drop done
dip
protect fold.act
[ behead swap

' [ witheach ] ]
[ fold.act put
nested join do ] is fold ( [ x --> x )
[ dup [] = if done
behead swap
witheach
[ fold.act share do ] ]
fold.act release ] is fold ( [ x --> x )


[ ' [ [ ] ] rot join swap
[ ' [ [ ] ] rot join swap
nested
nested
' [ nested join ] join
' [ nested join ] join
fold ] is map ( [ x --> [ )
fold ] is map ( [ x --> [ )


[ ' [ [ ] ] rot join swap
[ ' [ [ ] ] rot join swap
Line 3,544: Line 3,540:
' [ iff [ nested join ]
' [ iff [ nested join ]
else drop ] join
else drop ] join
fold ] is filter ( [ x --> [ )
fold ] is filter ( [ x --> [ )

</pre>
</pre>