convert bit to int forward with foldr

Viewed 180

bit array right to left, e.g. [0,1,0,1] = 10 can be read with:

binToInt = foldr (\x xs -> x + 2 * xs) 0  

I would like to read it left to right, e.g. [1,0,1,0] = 10

I thought this would work:

binToInt' = foldr (\x xs -> (x * ((^) 2 (length xs)) + xs) 0

however I get the error:

Couldn't match type `t0 a0' with `Int' 

what am I doing wrong?

(as a work around I am reversing the result of binToInt)

1 Answers
Related