Реализация функции (myData2Fun), которая принимает строку в качестве входных данных и расширяет ее сжатое представление в соответствии с правилами для кодирования длин серий. Суть сжатия заключается в том, что последовательные идентичные символы объединяются в одну группу. Например:
1. Input: myData2Fun "C"
Output: [Single "C"]
2. Input: myData2Fun "cvvccf"
Output:[Single 'c',Multiple 'v' 2,Multiple 'c' 2,Single 'f']
Также необходимо реализовать тип данных, необходимый для решения проблемы.
Япытаясь решить проблему следующим образом:
data MyData2 = Multiple Char Integer | Single Char deriving(Show)
myData2Fun (h:t) = fff h t 1
fff x (h:t) acc
| h == x = fff x t (acc + 1)
| h /= x && acc > 1 = Multiple x acc : fff h t 1
| h /= x && acc == 1 = Single x : fff h t 1
fff x [] acc
| acc>0 = Multiple x acc : []
| acc == 0 = Single x : []
Но моя программа находится в строке с одним символом, например Input: myData2Fun "c" возвращает Output: [Multiple 'c' 1] вместоВыход: [Одиночный 'c']. Помогите найти ошибку и исправить код.