我有2个类型定义
type Mapper a k v = a -> [(k,v)]
type MapperM m a k v = a -> m [(k,v)]
我想编写一个将类型转换为值的函数
(Ord k, Monad m) => MapperM m a k v
输入
Ord k => Mapper a k v
基本上是一个以-> m [(k,v)]作为参数并返回-> [(k,v)]作为输出的函数。
我所有的尝试都因Haskell类型检查而失败。
我认为这在数学上是不可能的。
考虑m为Maybe的情况:该函数可以从Just [[k,v)]返回[[k,v)],但是从Nothing返回什么呢?
如果monad是IO,则从monad中提取参数将破坏IO提供的安全性。
还应考虑您的功能必须适用于任何可能的单子。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句