2

是否有一种简单的方法可以在 GHC 7.8 或更早版本上模拟燃烧的桥梁提案(也称为可折叠/可遍历提案, GHC 7.10的一部分)?

有些方面真的很难模仿。这包括类层次结构的变化。最有可能的是,该部分无法被模拟。

新功能和功能替换可以简单地从Data.Foldable朋友那里导入。然而,新类型签名的功能如lengthnull不可用。以下代码片段实现了假装燃烧桥梁的某些方面:

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

是否有一些包以更完整的方式做到这一点?

4

0 回答 0