 	// MARK: Printable
 
 	public var description: String {
-		return expression.analysis(
-			ifKind: const("Kind"),
-			ifType: const("Type"),
-			ifVariable: { "\($0) : \($1)" },
-			ifApplication: { "(\($0)) (\($1))" },
-			ifAbstraction: { "λ \($0) . \($1)" })
+		return expression.debugDescription
 	}
 }
 
-public enum DExpression<Recur> {
+public enum DExpression<Recur>: DebugPrintable {
 	// MARK: Analyses
 
 	public func analysis<T>(

	// MARK: DebugPrintable

	public var debugDescription: String {
		return description
	}



	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)" })
	}
}


