在haskell中,您可以执行以下操作:
type Parser a = String -> [(a, String)]
我试图在Swift中做类似的事情。到目前为止,我没有运气写过这些代码。
typealias Parser<A> = String -> [(A, String)] typealias Parser a = String -> [(a, String)] typealias Parser = String -> [(A, String)]
那么,这根本不可能很快吗?如果还有其他方法可以实现此行为?
更新: 似乎Swift 3现在支持通用类型别名 https://github.com/apple/swift/blob/master/CHANGELOG.md
typealias从Swift 3.0开始可以使用泛型。这应该为您工作:
typealias
typealias Parser<A> = (String) -> [(A, String)]
这是完整的文档:https : //developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/Declarations.html#//apple_ref/swift/grammar/typealias- declaration
用法(来自@Calin Drule评论):
func parse<A>(stringToParse: String, parser: Parser)