Terse.jl

Overview

Terse.jl provides the @types macro for defining Julia type hierarchies concisely.

using Pkg
Pkg.add("Terse")

Quickstart

using Terse

@types Shape > (
    Circle(radius::Float64),
    Rectangle(width::Float64, height::Float64)
)

@show supertype(Circle), supertype(Rectangle)
Circle(1.0), Rectangle(3.0, 4.0)
(supertype(Circle), supertype(Rectangle)) = (Main.Notebook.Shape, Main.Notebook.Shape)
(Circle(radius=1.0), Rectangle(width=3.0, height=4.0))

See Getting Started for a full overview of all supported syntax forms.