基于这个问题,在此代码中
data Promise a b = Pending (a -> b) | Resolved b | Broken
instance Functor (Promise x) where
fmap f (Pending g) = Pending (f . g)
Run Code Online (Sandbox Code Playgroud)
如果
g :: a -> b
Run Code Online (Sandbox Code Playgroud)
然后
Pending g :: Promise a b
Run Code Online (Sandbox Code Playgroud)
也
f :: b -> c
Run Code Online (Sandbox Code Playgroud)
因为存在f . g.
这意味着
Pending (f . g) :: Promise a c`.
Run Code Online (Sandbox Code Playgroud)
包起来
fmap :: (b -> c) -> Promise a b -> Promise a c
Run Code Online (Sandbox Code Playgroud)
现在fmap …
haskell ×1