@@ -154,6 +154,20 @@ module Prelude
154154 a' <- a
155155 return (f' a')
156156
157+ instance functorArr :: Functor ((->) r) where
158+ (<$>) = (<<<)
159+
160+ instance applyArr :: Apply ((->) r) where
161+ (<*>) f g x = f x (g x)
162+
163+ instance applicativeArr :: Applicative ((->) r) where
164+ pure = const
165+
166+ instance bindArr :: Bind ((->) r) where
167+ (>>=) m f x = f (m x) x
168+
169+ instance monadArr :: Monad ((->) r)
170+
157171 infixl 7 *
158172 infixl 7 /
159173 infixl 7 %
@@ -443,6 +457,9 @@ module Prelude
443457 instance semigroupString :: Semigroup String where
444458 (<>) = concatString
445459
460+ instance semigroupArr :: (Semigroup s') => Semigroup (s -> s') where
461+ (<>) f g = \x -> f x <> g x
462+
446463 infixr 5 ++
447464
448465 (++) :: forall s. (Semigroup s) => s -> s -> s