Types are central to Julia programming, but the built-in `type` and
`immutable` definitions can be cumbersome to write. QuickTypes.jl
<https://github.com/cstjean/QuickTypes.jl> provides two alternative macros,
*@qtype* and *@qimmutable, *with a more convenient syntax:
Pkg.add("QuickTypes") # to install
using QuickTypes
@qtype Wall(width, height)
# Optional and keyword-arguments
@qtype Cat(name, age::Int, nlegs=4; species="Siamese")
# Parametric type
@qtype Pack{T}(animals::Vector{T})
# Inheritance
abstract Tree
@qtype Maple(qty_syrup::Float64) <: Tree
# Immutables work the same way
@qimmutable SquaredNumber(x2::Number)