[Haskell-beginners] question on evaluation
Fabien R
theedge456 at free.fr
Sat Jan 9 15:21:46 UTC 2016
Hello,
I want to define a function blowup that takes "bang" as input and
returns "baannngggg".
I come up with these functions;
myReverse :: [a] -> [a]
myReverse [] = []
myReverse (x:xs) = myReverse xs ++ [x]
buildLenList :: String -> [Int]
buildLenList "" = []
buildLenList (_:xs) = [1 + length xs ] ++ buildLenList xs
myRepeat :: Char -> Int -> String
myRepeat x 0 = []
myRepeat x n = [x] ++ myRepeat x (n - 1)
blowup :: String -> String
blowup [] = []
blowup (x:xs) = myRepeat x (head ( (buildLenList (x:xs)))) ++ blowup xs
With this code, blowup "bang" returns "bbbbaaanng".
So I thought to insert myReverse between head and buildLenList but in
that case, the result is only "bang".
It seems that the evaluation of buildLenList is not working as I
thought. I tried to debug that using ghci debugger but failed (still
learning).
Can someone explain how the evaluation is done here ?
--
Fabien
More information about the Beginners
mailing list