Haskell version that is fully lazy, (though not point-free or completely idiomatic).
import Data.List (group)
rle = map (\x-> (length x, head x)) . group
main = print $ rle "aaaabccaadeeee"