j2b2
February 8, 2018, 3:10pm
1
Hi, here is my code :
julia> using Primes
julia> f=factor(binomial(30,12))
3 ⋅ 5^2 ⋅ 7 ⋅ 13 ⋅ 19 ⋅ 23 ⋅ 29
julia> repr(f)
"Primes.Factorization(3=>1,5=>2,7=>1,13=>1,19=>1,23=>1,29=>1)"
julia> string(f)
"Primes.Factorization(3=>1,5=>2,7=>1,13=>1,19=>1,23=>1,29=>1)"
Primes.Factorization
has a nice show()
method, but how to build a string from this representation ?
julia> reprmime("text/plain", f)
"3 ⋅ 5^2 ⋅ 7 ⋅ 13 ⋅ 19 ⋅ 23 ⋅ 29"
3 Likes
j2b2
February 8, 2018, 3:21pm
4
Wow, thank you a lot, this function is well hidden in the doc !
I did not find it from the docs, if you ?repr
it shows up in the search.
j2b2
February 10, 2018, 3:50pm
6
You’re right, but I used the doc, where repr
and string
are in
https://docs.julialang.org/en/stable/stdlib/strings/ (that looks fine :-),
whereas reprmime
and stringmime
are in
https://docs.julialang.org/en/stable/stdlib/io-network/ .
Anyway imho repr
should be the good answer.
repr
is equivalent to show(io, x)
, whereas reprmime
(documented here ) is equivalent to show(io, mime, x)
. The latter defaults to the former for text/plain
, but it is sometimes desirable to distinguish the two, as described here: https://docs.julialang.org/en/stable/manual/types/#Custom-pretty-printing-1
Usually, you want repr(x)
to be a form that you could use to enter the same object, i.e. includestring(repr(x))
should usually work. Whereas the text/plain
version might be a more pretty-printed output that is designed for human consumption, not computer parsing.
That being said, I suspect that we should rename reprmime(mime, x)
to repr(mime, x)
, just as writemime(io, mime, x)
was renamed to show(io, mime, x)
.
4 Likes