type EachToken
    stream::IOStream
    EachToken(filename::String) = new(open(filename, "r"))
end

start(itr::EachToken) = nada
function next(itr::EachToken, nada)
    token = readutil(itr.stream, " ")
    return token[1: end - 1]
end
done(itr::EachToken, nada) = eof(itr.stream)

function counted_tokens(token_iterator)
    counts = Dict{String, Int32}()
    for token=token_iterator
        counts[token] = get(counts, token, 0) + 1
    end
    return counts
end

token_it = EachToken("small_text.txt")
counts = counted_tokens(token_it)
println(counts)

# compiler output
# ERROR: no method start(EachToken,)
# in counted_tokens at /home/rrenaud/word2vec_jl/word_to_vec.jl:16
# in include at boot.jl:238
#  at /home/rrenaud/word2vec_jl/word_to_vec.jl:24