 }
 
 
+// MARK: Private
+
 /// Private state for memoization.
 private enum MemoState<T> {
 	case Evaluated(Box<T>)


/// Deferred, memoized evaluation.
public struct Memo<T> {

	// MARK: Constructors

	public init(_ unevaluated: @autoclosure () -> T) {
		state = MutableBox(.Unevaluated(unevaluated))

	}


	// MARK: API

	func map<U>(f: T -> U) -> Memo<U> {
		return Memo<U>(f(value))
	}


	// MARK: Private

	private init(state: MemoState<T>) {
		self.init(state: MutableBox(state))
