Created
February 10, 2017 23:36
-
-
Save adolfopa/64a1a59c28cbd77b71449d68f4c36dc0 to your computer and use it in GitHub Desktop.
Implementation of some higher order functions in Forth
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
: -range ( a-addr1 u -- a-addr2 a-addr1 ) | |
cells over + ; | |
: range ( a-addr1 u -- a-addr1 a-addr2) | |
-range swap ; | |
: map! ( xt a-addr u -- ) | |
range ?do i @ over execute i ! cell +loop ; | |
: foldl ( xt w1 a-addr u2 -- w2 ) | |
2over drop >r range ?do i @ j execute cell +loop r> drop ; | |
: foldr ( xt w1 a-addr u2 -- w3 ) | |
2over drop >r -range ?do j i @ execute cell negate +loop r> drop ; | |
: reduce ( xt a-addr u1 -- w ) | |
over @ -rot foldl ; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment