Я предполагаю, что вы определили это в ghci
. Если вы пишете функции, которые занимают несколько строк, вы должны окружить их :{
и :}
. Если вы делаете , а не , вы определяете две функции rle
. Второй будет более локальным, поэтому, если вы позже позвоните rle
, он выберет этот.
Например:
$ ghci
GHCi, version 8.0.2: http://www.haskell.org/ghc/ :? for help
Loaded GHCi configuration from /home/kommusoft/.ghci
Prelude> :{
Prelude| rle [] s acc = acc
Prelude| rle (x:xs) s acc = rle xs s ((x, count x s) : acc)
Prelude|
Prelude| count x = length . filter (x==)
Prelude| :}
Prelude> rle "abcd" "aaa" []
[('d',0),('c',0),('b',0),('a',3)]
Однако работа с count
будет не работает здесь, так как ваш rle
каждый раз делает один шаг в списке. Кроме того, вы не должны использовать аккумулятор.