[Haskell-beginners] Couldn't match expected type `(a0 -> [a0]) -> [a0]', with actual type `[a0]'
Sumit Sahrawat, Maths & Computing, IIT (BHU)
sumit.sahrawat.apm13 at iitbhu.ac.in
Sat May 23 11:59:05 UTC 2015
The error lies here:
toDigits' acc number = ((number `mod` 10 ): acc) (toDigits' (number `mod`
10))
It should instead be
toDigits' acc number = (number `mod` 10) : (toDigits' acc (number `mod` 10))
My suggestion would be to look at it like a fold.
toDigits' :: Integral a => a -> a -> [a]
toDigits' acc 0 = [acc]
toDigits' acc n = n `mod` 10 : toDigits' acc (n `div` 10)
Now this gives the digits in the reverse order, so in toDigits, you can
reverse it.
A good exercise would now be to re-write this as a fold. Graham Hutton has
a good paper about it. [1]
The best way would be to directly convert the number to a string using
show, but that's not the point of the exercise.
[1]: https://www.cs.nott.ac.uk/~gmh/fold.pdf
On 23 May 2015 at 12:28, Roelof Wobben <r.wobben at home.nl> wrote:
> Hello,
>
> For some reasons my file's are corrupted.
> I had repair them with success except this one.
>
> Here is the code :
>
> toDigits number
> | number <= 0 = []
> | otherwise = toDigits' [] number
> where
> toDigits' acc 0 = acc
> toDigits' acc number = ((number `mod` 10 ): acc) (toDigits' (number
> `mod` 10))
>
> main = print $ toDigits 123
>
>
> and here is the error:
>
> Couldn't match expected type `(a0 -> [a0]) -> [a0]'
> with actual type `[a0]'
> The function `(number `mod` 10) : acc' is applied to one argument,
> but its type `[a0]' has none
> In the expression:
> ((number `mod` 10) : acc) (toDigits' (number `mod` 10))
> In an equation for toDigits':
> toDigits' acc number
> = ((number `mod` 10) : acc) (toDigits' (number `mod` 10))
>
>
> Roelof
>
>
> ---
> Dit e-mailbericht is gecontroleerd op virussen met Avast antivirussoftware.
> http://www.avast.com
>
> _______________________________________________
> Beginners mailing list
> Beginners at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
>
--
Regards
Sumit Sahrawat
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/beginners/attachments/20150523/cf0ab6e4/attachment.html>
More information about the Beginners
mailing list