[Haskell-cafe] Where's the error in this snippet of code?
Christian Maeder
maeder at tzi.de
Wed Mar 24 17:55:11 EST 2004
Alex Gontcharov wrote:
> Ignore the layout
pStack needs to be indented to the same level than digStack (or a
"where" must be inserted after digStack).
> I can't find the error, running it gives parse error during compile on
> pStack, it is not very descriptive and I don't what is wrong.
after correct indentation, the error message of ghc is quite accurate:
Couldn't match `[Integer]' against `Integer -> [Integer]'
Expected type: [Integer]
Inferred type: Integer -> [Integer]
Probable cause: `pStack' is applied to too few arguments in the call
(pStack xs)
In the second argument of `(++)', namely `pStack xs'
>
> --Stack for the digits for numbers, a modulo b
> digStack :: Integer->Integer->[Integer]
> digStack a b
> | a == 0 = []
> | otherwise = (mod a b):(digStack (div a b) b)
>
> --Takes a list of remainders and
> pStack :: [Integer] -> Integer -> [Integer]
> pStack [] _ = []
> pStack (x:xs) a =
> digStack x a ++ pStack xs
the last expression should probably be "pStack xs a"
> I think I will never like Haskell :-)
Come on,
Christian
More information about the Haskell-Cafe
mailing list