@@ -323,7 +323,6 @@ module Prelude where
323module Data.Monoid where
323module Data.Monoid where
325 import Prelude
325 import Prelude
326− import Data.Array (foldl)
328 infixr 6 <>
327 infixr 6 <>
@@ -339,9 +338,6 @@ module Data.Monoid where
339 mempty = []
338 mempty = []
340 (<>) = Data.Array.concat
339 (<>) = Data.Array.concat
342− mconcat :: forall m. (Monoid m) => [m] -> m
343− mconcat = foldl (<>) mempty
345module Control.Applicative where
341module Control.Applicative where
347 import Prelude
343 import Prelude
@@ -365,6 +361,7 @@ module Control.Monad where
366 import Prelude
362 import Prelude
367 import Data.Array
363 import Data.Array
364+ import Data.Traversable
369 replicateM :: forall m a. (Monad m) => Number -> m a -> m [a]
366 replicateM :: forall m a. (Monad m) => Number -> m a -> m [a]
370 replicateM 0 _ = return []
367 replicateM 0 _ = return []
@@ -373,13 +370,6 @@ module Control.Monad where
373 as <- replicateM (n - 1) m
370 as <- replicateM (n - 1) m
374 return (a : as)
371 return (a : as)
376− mapM :: forall m a b. (Monad m) => (a -> m b) -> [a] -> m [b]
377− mapM _ [] = return []
383 infixr 1 >=>
373 infixr 1 >=>
384 infixr 1 <=<
374 infixr 1 <=<
@@ -391,13 +381,6 @@ module Control.Monad where
391 (<=<) :: forall m a b c. (Monad m) => (b -> m c) -> (a -> m b) -> a -> m c
381 (<=<) :: forall m a b c. (Monad m) => (b -> m c) -> (a -> m b) -> a -> m c
392 (<=<) = flip (>=>)
382 (<=<) = flip (>=>)
394− sequence :: forall m a. (Monad m) => [m a] -> m [a]
395− sequence [] = return []
396− sequence (m:ms) = do
401 join :: forall m a. (Monad m) => m (m a) -> m a
384 join :: forall m a. (Monad m) => m (m a) -> m a
402 join mm = do
385 join mm = do
@@ -411,8 +394,8 @@ module Control.Monad where
411 when true m = m
394 when true m = m
412 when false _ = return {}
395 when false _ = return {}
414− zipWithM :: forall m a b c. (Monad m) => (a -> b -> m c) -> [a] -> [b] -> m [c]
397+ zipWithA :: forall m a b c. (Applicative m) => (a -> b -> m c) -> [a] -> [b] -> m [c]
415− zipWithM f xs ys = sequence $ zipWith f xs ys
398+ zipWithA f xs ys = sequence (zipWith f xs ys)
417module Data.Maybe where
400module Data.Maybe where
@@ -500,14 +483,6 @@ module Data.Array where
500 map _ [] = []
483 map _ [] = []
501 map f (x:xs) = f x : map f xs
484 map f (x:xs) = f x : map f xs
503− foldr :: forall a b. (a -> b -> a) -> a -> [b] -> a
504− foldr f a (b : bs) = f (foldr f a bs) b
507− foldl :: forall a b. (b -> a -> b) -> b -> [a] -> b
509− foldl f b (a:as) = foldl f (f b a) as
511 foreign import length "function length(xs) {\
486 foreign import length "function length(xs) {\
512 \ return xs.length;\
487 \ return xs.length;\
513 \}" :: forall a. [a] -> Number
488 \}" :: forall a. [a] -> Number
@@ -1317,6 +1292,9 @@ module Data.Foldable where
1317 sequence_ :: forall a f m. (Applicative m, Foldable f) => f (m a) -> m {}
1292 sequence_ :: forall a f m. (Applicative m, Foldable f) => f (m a) -> m {}
1318 sequence_ = traverse_ id
1293 sequence_ = traverse_ id
1295+ mconcat :: forall f m. (Foldable f, Monoid m) => f m -> m
1296+ mconcat = foldl (<>) mempty
1320module Data.Traversable where
1298module Data.Traversable where
1322 import Prelude
1300 import Prelude