module main

struct ParExpr {
	expr Expr
}

struct InfixExpr {
	left  Expr
	right Expr
}

type Expr = InfixExpr | ParExpr

fn print_expr(expr &Expr) {
	println(expr)
}

fn main() {
	par := ParExpr{
		expr: InfixExpr{}
	}

	print_expr(par)
	print_expr(Expr(par))
	print_expr(par.expr)
	print_expr(&par.expr)
}
