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

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

    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'), (==», Ь»), (==», С»)]. Что я ожидаю: если ref = "а» и цель = "aabbaacc» затем

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

покажет ["аааа «»бб «»куб.см»] тогда я могу использовать длину карты по этому, чтобы получить частоту Здесь для фильтрации списка в соответствии с ref я использую [(== 'a'), (==», Ь»), (==», С»)]

Я предполагаю, что какая-то логическая ошибка лежит [(== 'a'), (==», Ь»), (==», С»)] Вот..

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

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