[Haskell-cafe] Stupid error, probably
b1g3ar5
nick.straw at gmail.com
Mon Oct 12 19:03:24 EDT 2009
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]]
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