Errata : here is a MWE that actually works.
immutable Literal
symbol::Symbol
level::Int
end
typealias SymbolInt @compat(Tuple{Symbol,Int})
Literal(tup::SymbolInt) = Literal(tup[1], tup[2])
Literal(sym::Symbol) = Literal(sym, 1)
typealias MyList LinkedList{Literal}
MyList() = nil(Literal)
MyList(head, tail...) = cons(Literal(head), MyList(tail...))
After running this on v0.4, MyList(:a, (:b, 2)) yields
list(Literal(:a,1), Literal(:b,2))
which is exactly what I want: a list of Literals that support mixed syntax for element construction.
Is it possible to do this on prior versions ?
Vincent.