on master help sign in
Merge pull request #836 from trillioneyes/monad-providers

Added Functor, Applicative, and Monad Provider instances

commit1953d4a4e2e2db05bc66cf21f7da044c8368a1ec authorEdwin Brady <edwin.brady@gmail.com> dateSun 2 Feb 2014, 16:02 (13 years ago) parent544546d2a137dc
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