X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=Data%2FTraversable.hs;h=df10679cf40e27cc8252e16fa5766340b770bd7d;hb=8d585f7c5ad8c4b46f9ca58931e1379abbd359af;hp=7ad399150127d92d96d7ce91d629afbd1214d269;hpb=38b2f3cef719c9aab2223dcb417958f5d247c212;p=ghc-base.git diff --git a/Data/Traversable.hs b/Data/Traversable.hs index 7ad3991..df10679 100644 --- a/Data/Traversable.hs +++ b/Data/Traversable.hs @@ -43,6 +43,12 @@ import Control.Applicative import Data.Foldable (Foldable()) import Data.Monoid (Monoid) +#if defined(__GLASGOW_HASKELL__) +import GHC.Arr +#elif defined(__HUGS__) +import Hugs.Array +#endif + -- | Functors representing data structures that can be traversed from -- left to right. -- @@ -104,6 +110,11 @@ instance Traversable [] where mapM = Prelude.mapM +#ifndef __NHC__ +instance Ix i => Traversable (Array i) where + traverse f arr = listArray (bounds arr) `fmap` traverse f (elems arr) +#endif + -- general functions -- | 'for' is 'traverse' with its arguments flipped.