While learning Haskell, I've to do a function to return all whole numbers divisors of a given number. So, I've created it using two nested where
clauses, but it doesn't work.
Error returned: exs2.hs:49:24: Parse error in pattern: negRef / 2
divisors' :: (Integral a) => a -> [a]
divisors' x = divs x (x/2) [x]
where
divs ref 1 list = negDiv (-ref) (-2) ((-1):1:list)
divs ref num list = if (mod ref num == 0) then divs ref (num-1) (num:list) else divs ref (num-1) list
where
negDiv negRef (negRef/2) negList = (negRef:(negRef/2):negList)
negDiv negRef negNum negList = if (mod negRef negNum == 0) then negDiv (negNum-1) (negNum:negList) else negDiv (negNum-1) negList
What's the wrong thing then? It seems to be well indented.