Ошибка в функции перевода римского числа в десятичную систему счисления
Написал 4 функции для нахождения суммы римского числа с двоичным, оба переводятся в десятеричную и затем складываются.Проверил отдельно все функции, ошибка появляется только в romeToInt
.
Вызываю функцию в терминале : romePlusDec "X" "101"
и в терминале появляется такая ошибка : non-exhaustive patterns in romeToInt
. Что в ней не так ?
romeDig :: Char -> Int
romeDig 'I' = 1
romeDig 'V' = 5
romeDig 'X' = 10
romeDig 'L' = 50
romeDig 'C' = 100
romeDig 'D' = 500
romeDig 'M' = 1000
romeToInt :: [Char] -> Int
romeToint [x] = romeDig x
romeToInt (x:y:xs)
| romeDig x < romeDig y = romeToInt (y:xs) - romeDig x
| otherwise = romeToInt (y:xs) + romeDig x
binToDec [] = 0
binToDec (x:xs) = digitToInt(x) * (2^(length xs)) + (binToDec xs)
romePlusDec :: [Char] -> [Char] -> Int
romePlusDec a b = romeToInt a + binToDec b
Источник: Stack Overflow на русском