GHC 7.8またはおそらくそれより古いバーニングブリッジの提案(GHC 7.10の一部であるfoldable/traversable提案とも呼ばれる)をエミュレートする簡単な方法はありますか?
真似するのが本当に難しい側面もあります。これには、クラス階層の変更が含まれます。おそらく、その部分はエミュレートできません。
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
これをより完全な方法で行うパッケージはありますか?