2

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

これをより完全な方法で行うパッケージはありますか?

4

0 に答える 0