local function split(test, f, s, v) local bridge = v local function filter(...) bridge = ... if test(...) then return nil else return ... end end local function head(s, v) return filter(f(s, v)) end return function() return head, s, v end, function() return f, s, bridge end end