I think you cannot create a show method for a typealias as it is
indistinguishable from the type it aliases.

On Mon, 2015-08-10 at 19:07, Ben Ward <axolotlfan9...@gmail.com> wrote:
> Hi, I have implemented a basic immutable type with a type alias for a vector 
> of
> said type:
>
> immutable CIGAR
>   OP::Operation
>   Size::Int
> end
>
>
> function CIGAR(op::Char, size::Int)
>   return CIGAR(Operation(op), size)
> end
>
>
> function convert(::Type{String}, cigar::CIGAR)
>   return "$(cigar.Size)$(Char(cigar.OP))"
> end
>
>
> function show(io::IO, cigar::CIGAR)
>   write(io, convert(String, cigar))
> end
>
>
> typealias CIGARString Vector{CIGAR}
>
>
> function convert(::Type{CIGARString}, str::String)
>   matches = matchall(r"(\d+)(\w)", str)
>   cigarString = Vector{CIGAR}(length(matches))
>   @inbounds for i in 1:length(matches)
>     m = matches[i]
>     cigarString[i] = CIGAR(m[end], parse(Int, m[1:end-1]))
>   end
>   return cigarString
> end
>
>
> macro cigar_str(str)
>   return CIGARString(str)
> end
>
> I also want to define a show method for the alias CIGARString, so as it is
> converted to a string that can be used with a show method:
>
> function convert(::Type{String}, cigarString::CIGARString)
>   outString = ""
>   for cigar in cigarString
>     outString *= String(cigar)
>   end
>   return outString
> end
>
>
> function show(io::IO, cigarstr::CIGARString)
>   write(io, convert(String, cigarstr))
> end
>
> However the output a see on the REPL is:
>
>
> 3-element Array{Bio.Align.CIGAR,1}:
>
>
> 5M
>
>
> 5N
>
>
> 5M
>
>
> So, rather than the show method for CIGARString being called, the show method
> for CIGAR is being called repeatedly for every element in the CIGARString
> vector. How do I get Julia to use the show method I want for CIGARString?
>
> Thanks.

Reply via email to