[Haskell-beginners] question on evaluation
Fabien R
theedge456 at free.fr
Sun Jan 10 21:32:47 UTC 2016
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 <theedge456 at free.fr> 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 at haskell.org
>> http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
>>
>
>
>
> _______________________________________________
> Beginners mailing list
> Beginners at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
>
More information about the Beginners
mailing list