[Haskell-cafe] Re: Reader monad, implicit parameters, or something else altogether?

apfelmus apfelmus at quantentunnel.de
Tue Aug 19 04:17:39 EDT 2008

Bjorn Buckwalter wrote:
> It seems that two options are to use
> either a Reader monad or implicit parameters. Using a Reader monad is
> straight forward enough though it requires writing/converting code
> in/to monadic style and adds some clutter to the formulae. It seems
> implicit parameters could be cleaner but I've seen them referred to as
> everything from evil to "just what you need" and rendering the Reader
> monad obsolete...
> What do you people recommend?

I'd go for applicative functors :)

  instance Applicative ((->) Constants) where
     pure    = const
     f <*> x = \r -> (f r) (x r)

This way, you don't have to use do-syntax and can keep an applicative look-and-feel.

  mu = \AstroData{mu_Earth} -> mu_Earth

  example = pure (*) <*> pure 5 <*> mu

Lifting arithmetic operations and numbers will get annoying with the time, but
that's nothing an  instance Num  can't solve. (If it can't, just hide (*) and
(+) from the prelude and define your own.)


More information about the Haskell-Cafe mailing list