如果这样的函数依赖于 monad 的选择,请用Maybe
. 在这种情况下,签名将是:
mayall :: Maybe a -> forall r. Maybe r
但是再一次,如果可以进行通用实现,将不胜感激。这里的关键是结果必须是Maybe r
,而不是某些特定的数据构造函数,例如Maybe Item
对于某些
data Item = forall r. Show r => Item r
如果无法实现,可以使用一些替代签名:
`Monad m => m a -> forall r. n r`
满意?
在上述情况下,n
不一定是 monad,如果是,则可能与m