Skip to content

Instantly share code, notes, and snippets.

@paniq
Last active March 21, 2019 18:20
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save paniq/dd26a2a8701ba98ef8a0d59303f1f93e to your computer and use it in GitHub Desktop.
Save paniq/dd26a2a8701ba98ef8a0d59303f1f93e to your computer and use it in GitHub Desktop.
let infinite-range =
Generator
inline () 0
inline (x) true
inline (x) x
inline (x) (x + 1)
inline zip (a b)
let start-a valid-a at-a next-a = ((a as Generator))
let start-b valid-b at-b next-b = ((b as Generator))
let start-a... = (start-a)
let lsize = (va-countof start-a...)
let start... = (va-va-append start-b start-a...)
Generator
inline () start...
inline (it...)
let it-a it-b = (va-split lsize it...)
(valid-a (it-a)) & (valid-b (it-b))
inline (it...)
let it-a it-b = (va-split lsize it...)
va-va-append (inline () (at-b (it-b))) (at-a (it-a))
inline (it...)
let it-a it-b = (va-split lsize it...)
va-va-append (inline () (next-b (it-b))) (next-a (it-a))
inline enumerate (x)
zip infinite-range x
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment