on master help sign in
Added Functor, Applicative, and Monad Provider instances
commit2a137dc01bcdb1b65efbe352d7d645a28480df80 authorAlyssa Carter <trillionalyssa@gmail.com> dateSun 2 Feb 2014, 17:24 (13 years ago) parent93c06b5
1 file changed+14
libs/base/Providers.idr+14
libs/base/Providers.idr+14
@@ -3,3 +3,17 @@ module Providers
33public
44data Provider a = Provide a | Error String
55
6+-- instances
7+instance Functor Provider where
8+ map f (Provide a) = Provide (f a)
9+ map f (Error err) = Error err
10+
11+instance Applicative Provider where
12+ (Provide f) <$> (Provide x) = Provide (f x)
13+ (Provide f) <$> (Error err) = Error err
14+ (Error err) <$> _ = Error err
15+ pure = Provide
16+
17+instance Monad Provider where
18+ (Provide x) >>= f = f x
19+ (Error err) >>= _ = Error err