I am new in Haskell and practicing Algorithm in Haskell follow the book "Pearls of Functional Algorithm Design"
This is the algo to find the smallest natural number not in a given finite set X of natural numbers
import Data.List
import Data.Array
minfree xs = if null ([0..b-1] \\ us)
then head ([b..] \\ vs)
else head ([0..b-1] \\ us)
where (us, vs) = (partition (<b) xs)
b = div (length xs) 2
Pff the compiler error like this
Prelude Data.Array Data.List> :load 01_the_smallest_free_number.hs
[1 of 1] Compiling Main ( 01_the_smallest_free_number.hs, interpreted )
01_the_smallest_free_number.hs:11:29: error:
parse error on input ‘=’
Perhaps you need a 'let' in a 'do' block?
e.g. 'let x = 5' instead of 'x = 5'
|
11 | b = div (length xs) 2
| ^
Failed, no modules loaded.
Well obveriously add let before b is not the right answer I've tried.
Then I replaced all b to div (length xs) 2 that works, so seems here is the problem to be, but I don't get it