[Haskell-beginners] question on evaluation

Rein Henrichs rein.henrichs at gmail.com
Mon Jan 11 05:24:31 UTC 2016


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 <theedge456 at free.fr> wrote:

> 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
> >
>
> _______________________________________________
> Beginners mailing list
> Beginners at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/beginners/attachments/20160111/d4f05438/attachment.html>


More information about the Beginners mailing list