The whole premise of an alias is that it's a different name for the same thing.
> On Aug 14, 2015, at 8:16 PM, Jeffrey Sarnoff <jeffrey.sarn...@gmail.com> > wrote: > > Ben, much as I would like there to be a second kind of typealias, typealiased > -- that let us work with the renanamings wiithout risk to the objects of the > type originally aliased -- this is not on the radar now. It is hard to peel > off enough to form the CIGAR when the role of typealias is to preclude > introducing distictiction outside of recognizing a the alias as if it were a > nickname. > > > >> On Friday, August 14, 2015 at 7:26:07 PM UTC-4, Ben Ward wrote: >> Would that work? The variable to be printed isn't fed in as the second >> option? >> >>> On Wednesday, August 12, 2015 at 1:34:16 AM UTC+1, colint...@gmail.com >>> wrote: >>> Does the following work? >>> >>> function Base.show(io::IO, ::Type{CIGARString}) >>> #your code here >>> end >>> >>> >>> >>>> On Tuesday, 11 August 2015 03:07:15 UTC+10, Ben Ward 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.