 
 public struct Term: BooleanLiteralConvertible, CustomDebugStringConvertible, FixpointType, Hashable, IntegerLiteralConvertible, CustomStringConvertible {
 	public init(_ expression: Expression<Term>) {
-		self.init(Memo(evaluated: expression))
+		self.init { expression }
 	}
 
 	public init(_ expression: () -> Expression<Term>) {
-		self.init(Memo(expression))
-	}
-
-	private init(_ expression: Memo<Expression<Term>>) {
 		_expression = expression
 	}
 

		return expression.analysis(ifBoolean: Optional.Some, otherwise: const(nil))
	}

	private var _expression: Memo<Expression<Term>>
	public var expression: Expression<Term> {
		return _expression.value
	}





import Either
import Prelude
