Thanks Yu and Quinn.
Now lets go one step further. Lets say I don't want to use any default
parse function. I will make my own.
type Buffer{T} x::T end
function store!(b::Buffer{String}, c::Char) b.x = "$(b.x)$x" end
function store!(b::Buffer{Int}, c::Char, d::Int) b.x += (c - '0')*10^d end #d
is number of digits
Usage
get_rid_of_leading_spaces()
while !isspace((x = read_next_char()) store(buffer, x) end
But I can see potential problems:
1. *"$(b.x)$x"* is probably not much effective, maybe I should use
arrays of chars with fixed size, but how do I convert it to string?
string(char_array...) doesn't work with '\0' and I don't want to create new
array by calling char_array[1:size].
2. is *b.x += (c - '0')*10^d *really the fastest implementation possible?
As a side note, is there anything like show_method_body(function)? I often
want to see how is function base.xy implemented, but I have to manually
search all the files which is quite exhausting.