#{ from:to:by <- :_from :_to :_by { #{ from <- { _from } to <- { _to } by <- { _by } legnth <- { (_to - _from) / _by } get <- :idx { _to + idx * _by} array <- { fold: #[] with: :acc el { acc append: el } } list <- { map: :el { el } } map <- :fun { foldr: [] with: :acc el { (fun: el) | acc } } foldr:with <- :acc :fun { cur <- _from + ((_to - _from) / _by) * _by while: { cur >= _from } do: { acc <- fun: acc cur cur <- cur - _by } acc } fold:with <- :acc :fun { cur <- _from while: { cur < _to } do: { acc <- fun: acc cur cur <- cur + _by } acc } foreach <- :fun { idx <- 0 cur <- _from res <- cur while: { cur < _to} do: { res <- fun: idx cur idx <- idx + 1 cur <- cur + _by } res } } } from:to <- :f :t { from: f to: t by: 1 } }