在哈斯克尔,
foldm
foldl
)有这种类型。
foldM :: (Monad m) => (a -> b -> m a) -> a -> [b] -> m a
(见
this
Python等价物可以这样声明。
a = TypeVar('a')
b = TypeVar('b')
def foldM(f: Callable[[a, b], Monad], acc: a, xs: List[b]) -> Monad:
...
Monad
按类型参数化
a
Monad[a]
,但这是无效的。有办法吗?