gpt4 book ai didi

python - 是否可以在 Python 中正确键入提示 filterM 函数?

转载 作者:行者123 更新时间:2023-12-04 18:11:19 25 4
gpt4 key购买 nike

我目前正在通过在 python 中编写一个 monad 库来自学函数式编程。而且我在类型提示方面遇到了麻烦。例如,Haskell 中有一个带有签名的函数 filterM

filterM :: (a -> m Bool) -> [a] -> m [a]
理想情况下,如果 python 可以通过在 TypeVar 之后放置一个括号来匹配“子类型”的模式,那么我应该可以用这样的方法来做到这一点:
T = TypeVar('T')
M = TypeVar('M', bound=Monad)
def filterM(filter_func: Callable[[T], M[bool]], iterable: list[T]) -> M[list[T]]
但似乎上述语法不起作用。事实上,似乎根本没有办法“提取”我传入的 monad 类型。假设我通过 Callable[[int], Maybe[bool]] ,我取得的最好成绩是把整个 Maybe[bool]作为单个 TypeVar。那么就没有办法将其转换为正确的输出类型 Maybe[list[int]] .

最佳答案

Currently, what you want cannot be done.你必须制定一个不需要它的计划。

关于python - 是否可以在 Python 中正确键入提示 filterM 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71757452/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com