是否有一种简单的方法可以模拟GHC 7.8或可能更老的燃烧桥梁提案(也称为可折叠/可遍历提案,GHC 7.10的一部分)?
某些方面真的很难效仿。这包括更改类层次结构。最有可能的是,该部分无法模仿。
可以简单地从Data.Foldable
和朋友导入新功能和功能替换。但是,length
或null
等功能不适用于新类型签名。以下代码段实现了假装烧桥的一些方面:
import Prelude hiding (elem, foldr, length, maximum, null)
import Data.Foldable (Foldable, elem, foldMap, foldr, maximum, toList)
import Data.Traversable (Traversable, traverse)
length :: Foldable t => t a -> Int -- will become a method of Foldable
length = Data.Foldable.foldl' (\c _ -> c + 1) 0
null :: Foldable t => t a -> Bool -- will become a method of Foldable
null = foldr (\_ _ -> False) True
是否有一些包以更完整的方式执行此操作?