on master help sign in
Add traverse_ and sequence_ based on Foldable
commitac1c15b24fcd9ff7d3026433240e17c357fc50ad authorMelvar Chen <Melvar.Chen@googlemail.com> dateSun 4 Aug 2013, 01:57 (13 years ago) parentd39f234
4 files changed+13−8
lib/Prelude.idr+1 lib/Prelude/Applicative.idr−8 lib/Prelude/Traversable.idr+11 lib/base.ipkg+1
lib/Prelude.idr+1
@@ -15,6 +15,7 @@ import Prelude.Either
1515import Prelude.Vect
1616import Prelude.Strings
1717import Prelude.Chars
18+import Prelude.Traversable
1819
1920%access public
2021%default total
lib/Prelude/Applicative.idr−8
@@ -34,13 +34,5 @@ sequence : Applicative f => List (f a) -> f (List a)
3434sequence [] = pure []
3535sequence (x :: xs) = map (::) x <$> sequence xs
3636
37−sequence_ : Applicative f => List (f a) -> f ()
38−sequence_ [] = pure ()
39−sequence_ (x :: xs) = x $> sequence_ xs
40−
4137traverse : Applicative f => (a -> f b) -> List a -> f (List b)
4238traverse f xs = sequence (map f xs)
43−
44−traverse_ : Applicative f => (a -> f b) -> List a -> f ()
45−traverse_ f (x :: xs) = f x $> traverse_ f xs
46−traverse_ f [] = pure ()
lib/Prelude/Traversable.idrnew file+11
@@ -0,0 +1,11 @@
1+module Prelude.Traversable
2+
3+import Prelude.Applicative
4+import Prelude.Foldable
5+
6+traverse_ : (Foldable t, Applicative f) => (a -> f b) -> t a -> f ()
7+traverse_ f = foldr (($>) . f) (pure ())
8+
9+sequence_ : (Foldable t, Applicative f) => t (f a) -> f ()
10+sequence_ = foldr ($>) (pure ())
11+
lib/base.ipkg+1
@@ -7,6 +7,7 @@ modules = Builtins, Prelude, IO, System,
77 Prelude.List, Prelude.Maybe, Prelude.Monad, Prelude.Applicative,
88 Prelude.Either, Prelude.Vect, Prelude.Strings, Prelude.Chars,
99 Prelude.Heap, Prelude.Complex, Prelude.Functor, Prelude.Foldable,
10+ Prelude.Traversable,
1011
1112 Network.Cgi,
1213 Debug.Trace,