@@ -7,7 +7,6 @@ import Control.Alternative (class Alternative)
77import Control.Apply (lift2 )
88import Control.Comonad (class Comonad )
99import Control.Extend (class Extend )
10- import Control.Monad.Rec.Class (Step (..), tailRec )
1110import Control.MonadPlus (class MonadPlus )
1211import Control.MonadZero (class MonadZero )
1312import Control.Plus (class Plus )
@@ -67,26 +66,24 @@ instance functorList :: Functor List where
6766 map f = foldr (\x acc -> f x : acc) Nil
6867
6968instance foldableList :: Foldable List where
70- foldr f b as = foldl (flip f) b ( rev ( Tuple Nil as))
69+ foldr f b = foldl (flip f) b <<< rev Nil
7170 where
72- rev = tailRec \(Tuple acc xs) ->
73- case xs of
74- Nil -> Done acc
75- (x : xs') -> Loop (Tuple (x : acc) xs')
76- foldl f b as = go (Tuple b as)
71+ rev acc = case _ of
72+ Nil -> acc
73+ a : as -> rev (a : acc) as
74+ foldl f = go
7775 where
78- go = tailRec \(Tuple b' xs) ->
79- case xs of
80- Nil -> Done b'
81- (a : as') -> Loop (Tuple (f b' a) as')
76+ go b = case _ of
77+ Nil -> b
78+ a : as -> go (f b a) as
8279 foldMap f = foldl (\acc -> append acc <<< f) mempty
8380
8481instance unfoldableList :: Unfoldable List where
85- unfoldr f b = go ( Tuple b Nil )
82+ unfoldr f b = go b Nil
8683 where
87- go = tailRec \( Tuple source memo) -> case f source of
88- Nothing -> Done (foldl (flip (:)) Nil memo)
89- Just (Tuple one rest) -> Loop ( Tuple rest (one : memo) )
84+ go source memo = case f source of
85+ Nothing -> (foldl (flip (:)) Nil memo)
86+ Just (Tuple one rest) -> go rest (one : memo)
9087
9188instance traversableList :: Traversable List where
9289 traverse f = map (foldl (flip (:)) Nil ) <<< foldl (\acc -> lift2 (flip (:)) acc <<< f) (pure Nil )
0 commit comments