 	// MARK: DebugPrintable
 
 	public var debugDescription: String {
-		return description
+		return expression.debugDescription
 	}
 
 

	// MARK: Printable

	public var description: String {
		return expression.analysis(
			ifKind: const("Kind"),
			ifType: const("Type"),
			ifVariable: { "\($0) : \($1)" },
			ifApplication: { "(\($0)) (\($1))" },
			ifAbstraction: { "λ \($0) . \($1)" })
	}
}

public enum DExpression<Recur> {
	// MARK: Analyses

	public func analysis<T>(

	case Variable(Int, Box<Recur>)
	case Application(Box<Recur>, Box<Recur>)
	case Abstraction(Box<Recur>, Box<Recur>)


	// MARK: DebugPrintable

	public var debugDescription: String {
		return analysis(
			ifKind: const("Kind"),
			ifType: const("Type"),
			ifVariable: { "\($0) : \($1)" },
			ifApplication: { "(\($0)) (\($1))" },
			ifAbstraction: { "λ \($0) . \($1)" })
	}
}


