// RUN: %target-typecheck-verify-swift // https://github.com/apple/swift/issues/53147 struct Parser { let run: (inout Substring) -> A? func map(_ f: @escaping (A) -> B) -> Parser { return Parser { input in self.run(&input).map(f) } } } let char = Parser { str in guard let match = str.first else { return nil } str.removeFirst() return match } let northSouth = char.map { $0 == "N" ? 1.0 : $0 == "S" ? -1 : nil // Ok }