Частота подсчета каждого элемента в списке

Я пытаюсь написать программу, которая будет считать частоту каждого элемента в списке.

    In: "aabbcabb"
    Out: [("a",3),("b",4),("c",1)]

Вы можете посмотреть мой код по следующей ссылке:http://codepad.org/nyIECIT2 В этом коде вывод уникальной функции будет таким

     In: "aabbcabb"
     Out: "abc"

Используя вывод уникальности, мы посчитаем частоту списка целей. Вы также можете увидеть код здесь:

    frequencyOfElt xs=ans
       where ans=countElt(unique xs) xs
          unique []=[]
      unique xs=(head xs):(unique (filter((/=)(head xs))xs))
      countElt ref target=ans'
             where ans'=zip ref lengths
            lengths=map length $ zipWith($)(map[(=='a'),(==',b'),(==',c')](filter.(==))ref)(repeat target)

    Error:Syntax error in input (unexpected symbol "unique") 

Но в ghci 6.13 видны и другие ошибки

Мало кто спросил меня, какова цель использования [(== 'a'), (== ', b'), (== ', c')]. Что я ожидаю: если ref = "abc" и target = "aabbaacc", тогда

    zipWith($) (map filter ref)(repeat target)

покажет ["aaaa", "bb", "cc"], после чего я смогу использовать длину карты для получения частоты Здесь для фильтрации списка в соответствии с ref i use [(== 'a'), (== ' , б '), (==', с ')]

Я предполагаю, что здесь есть некоторая логическая ошибка [(== 'a'), (== ', b'), (== ', c')] ..

Ответы на вопрос(2)

Ваш ответ на вопрос