Julia stream a text file line by line

Julia
function each_line_of(path, f)
    open(path, "r") do io
        for (n, line) in enumerate(eachline(io))
            text = strip(line)
            isempty(text) && continue
            f(n, text)
        end
    end
end

path = joinpath(tempdir(), "demo-lines.txt")
write(path, "alpha\n\nbeta\n gamma \n")
seen = String[]
each_line_of(path, (n, text) -> push!(seen, "$n:$text"))
println(join(seen, ", "))

# readlines(path) loads everything at once; this keeps memory flat