Я написал этот двоично-десятичный преобразователь, получив ошибку компилятора. Я не знаю, откуда он приходит.
binaryToInteger :: [Bool] -> Integer
binaryToInteger (x:xs) = foldr (\x y z -> (fromEnum x) * 2^y + z) 0 [0..length (x:xs)]
На самом деле программа должна вернуть десятичный результат двоичного числа.Пример дано: binaryToInteger [True, True, False] == 1 (2 ^ 2) + 1 * (2 ^ 1) + 0 * (2 ^ 0) == 6 *
Мое сообщение об ошибке следующее: Не удалось найти ожидаемый тип Integer' with actual type
Int -> Int '
* Probable cause: `foldr' is applied to too few arguments
In the expression:
foldr (\ x y z -> (fromEnum x) * 2 ^ y + z) 0 [0 .. length (x : xs)]
In an equation for `binaryToInteger':
binaryToInteger (x : xs)
= foldr
(\ x y z -> (fromEnum x) * 2 ^ y + z) 0 [0 .. length (x : xs)]