Luaで真似事しようとするとこんな感じ?

function LC(f)
 local t = {}
 for x in coroutine.wrap(f) do
  table.insert(t, x)
 end
 return t
end

-- rangeの実装は省略
local t = LC(function () for x in range(10) do coroutine.yield(x ^ 2) end end)