[Haskell-cafe] Stupid error, probably

Daniel Fischer daniel.is.fischer at web.de
Mon Oct 12 20:02:01 EDT 2009


Am Dienstag 13 Oktober 2009 01:03:24 schrieb b1g3ar5:
> I can't get the following to work in Leksah - but it works OK in GHC.
> Can anyone spot the error?
>
> I wondered if it was becasue the libraries loaded are different - but
> I'm just a Haskell beginner ...
>
> I have:
>
> myGroupBy :: Int→  [a]→  [[a]]
                    ^^^^^^^^^^
That "Int" isn't used in the definition of myGroupBy

perhaps you intended to write

myGroupBy k = takeWhile (not . null) . unfoldr (Just . splitAt k)

?

> myGroupBy = takeWhile not . null . (unfoldr (Just . (splitAt 3)))
>
> and I am getting the error:
>
>     Couldn't match expected type `Int' against inferred type `[a]'
>     In the second argument of `(.)', namely `(splitAt 3)'
>     In the first argument of `unfoldr', namely `(Just . (splitAt 3))'
>     In the second argument of `(.)', namely
>         `(unfoldr (Just . (splitAt 3)))'
>
> But I think that
>
> splitAt :: Int->[a]->([a],[a])
>
> so:
>
> splitAt 3 :: [a]->([a], [a])
>
> and:
>
> Just.(splitAt 3) :: [a]->Maybe ([a], [a])
>
> which seems OK as the first argument of unfoldr:
>
> unfoldr ::  (b-> Maybe(a,b))->b->[a]
>
> with the a and b of unfoldr being [a] and [a].
>
> The mention of Int in the error makes me wonder if I've got the wrong
> splitAt - with the arguments reversed maybe.
>
> Any ideas?
>
> Thanks.
>
> N




More information about the Haskell-Cafe mailing list