[Haskell-cafe] GHC predictability

Luke Palmer lrpalmer at gmail.com
Tue May 13 15:38:05 EDT 2008


On Tue, May 13, 2008 at 12:48 PM, Paul Johnson <paul at cogito.org.uk> wrote:
>  > $ pointfree "\xs -> foldl' (+) 0 xs / fromIntegral (length xs)"
>  > ap ((/) . foldl' (+) 0) (fromIntegral . length)
>
>  But when I try this in GHCi 6.8.2 I get:
>
>  > Prelude Data.List Control.Monad> let mean2 = ap ((/) . foldl' (+) 0)
> (fromIntegral . length)
>  >
>  > <interactive>:1:12:
>  >    No instance for (Monad ((->) [b]))
>  >       arising from a use of `ap' at <interactive>:1:12-58
>  >     Possible fix: add an instance declaration for (Monad ((->) [b]))
>  >    In the expression: ap ((/) . foldl' (+) 0) (fromIntegral . length)
>  >    In the definition of `mean2':
>  >        mean2 = ap ((/) . foldl' (+) 0) (fromIntegral . length)

It's using the Monad ((->) r) instance, which doesn't exist by
default.  import Control.Monad.Instances to get it.

Luke


More information about the Haskell-Cafe mailing list