2
我实现基本Functor
Typealias都必须公开声明,因为它符合公共协议的要求
// class Functor f where
public protocol Functor {
typealias A
typealias B
typealias FB
// fmap :: (a -> b) -> f a -> f b
func fmap(f: A -> B) -> FB
}
public struct Box<X> {
let value: X
public init(value v: X) {
value = v
}
}
extension Box : Functor {
public typealias A = X
public typealias B = Any
public typealias FB = Box<B>
public func fmap(f: A -> B) -> FB {
return FB(value: f(value))
}
}
如果我不申报public typealias
,一个错误会弹出
Typealias必须被公开,因为它符合 的要求公共协议
该消息确实没有给出太多线索,为什么需要公开?