// Copyright © 2015 GitHub. All rights reserved. public enum Cofree { indirect case Unroll(B, Syntax) } // MARK: - Comonad extension Cofree { var extract: B { switch self { case let .Unroll(b, _): return b } } }