【发布时间】:2019-04-06 18:28:11
【问题描述】:
在 Haskell 中,foldm(foldl 的 monad 版本)具有这种类型。
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],但那是无效的。有没有办法做到这一点?
【问题讨论】:
-
什么是
Monad?它不在typing中。你是什么意思“无效”?给minimal reproducible example。 -
可能还取决于您实际用于类型检查的内容(
mypy与 PyCharm IDE 等),请参阅 medium.com/@ageitgey/…
标签: python haskell python-typing