Ошибка в функции перевода римского числа в десятичную систему счисления

Рейтинг: 1Ответов: 0Опубликовано: 22.07.2023

Написал 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

Ответы

Ответов пока нет.