Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- protocol Functor {
- associatedtype A
- associatedtype F: Functor = Self
- static func fmap<B> (_ f: @escaping (A) -> B) -> (Self) -> F where F.A == B
- }
- enum Maybe<A> {
- case Nothing
- case Just (A)
- }
- extension Maybe: Functor {
- static func fmap<B>(_ f: @escaping ((A) -> B)) -> (Maybe<A>) -> Maybe<B> {
- return { (functor: Maybe<A>) in
- switch functor {
- case let .Just (x): return .Just (f (x))
- case .Nothing: return .Nothing
- }
- }
- }
- }
- let test1: Maybe<Int> = Maybe.Just (0)
- , test2: Maybe<String> = Maybe.fmap { String ($0) } (test1)
- print (test2)
- // func fmap
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement