
Now that you understand what's going on with your version, here's an
idiomatic definition of blowup for you to consider:
blowup :: String -> String
blowup = join . zipWith replicate [1..]
> blowup "bang"
"baannngggg"
On Sun, Jan 10, 2016 at 1:33 PM Fabien R
On 10/01/16 00:54, Theodore Lief Gannon wrote:
And the reason calling myReverse on that doesn't give you [1, 2, 3, 4] is that you're reversing a different list every time: Got it.
(...)
Since you only asked for help with how it evaluates, I'll withhold further spoilers. :) However, I strongly recommend getting more comfortable using the (:) operator for construction instead of just pattern matching; in a couple of your functions it would be a better tool than (++). I'll dig further into that.
Also,
"at-patterns" are great:
blowup l@(x:xs) = myRepeat x (head (buildLenList l)) ++ blowup xs This is handy.
Thanks Theodore,
-- Fabien
On Sat, Jan 9, 2016 at 7:21 AM, Fabien R
wrote: 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 _______________________________________________ Beginners mailing list Beginners@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
_______________________________________________ Beginners mailing list Beginners@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
_______________________________________________ Beginners mailing list Beginners@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners