Send Beginners mailing list submissions to
        beginners@haskell.org

To subscribe or unsubscribe via the World Wide Web, visit
        http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
or, via email, send a message with subject or body 'help' to
        beginners-requ...@haskell.org

You can reach the person managing the list at
        beginners-ow...@haskell.org

When replying, please edit your Subject line so it is more specific
than "Re: Contents of Beginners digest..."


Today's Topics:

   1. Re:  question on evaluation (Fabien R)
   2. Re:  question on evaluation (Rein Henrichs)
   3. Re:  question on evaluation (Fabien R)


----------------------------------------------------------------------

Message: 1
Date: Sun, 10 Jan 2016 22:32:47 +0100
From: Fabien R <theedge...@free.fr>
To: beginners@haskell.org
Subject: Re: [Haskell-beginners] question on evaluation
Message-ID: <5692cdff.8030...@free.fr>
Content-Type: text/plain; charset=windows-1252; format=flowed

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 <theedge...@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@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
>



------------------------------

Message: 2
Date: Mon, 11 Jan 2016 05:24:31 +0000
From: Rein Henrichs <rein.henri...@gmail.com>
To: The Haskell-Beginners Mailing List - Discussion of primarily
        beginner-level topics related to Haskell <beginners@haskell.org>
Subject: Re: [Haskell-beginners] question on evaluation
Message-ID:
        <CAJp6G8ytBADrs6RTMgY_cd+wK9DCO_JTi2mxOSUy7zUX=J=w...@mail.gmail.com>
Content-Type: text/plain; charset="utf-8"

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 <theedge...@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 <theedge...@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@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
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: 
<http://mail.haskell.org/pipermail/beginners/attachments/20160111/d4f05438/attachment-0001.html>

------------------------------

Message: 3
Date: Mon, 11 Jan 2016 09:41:07 +0100
From: Fabien R <theedge...@free.fr>
To: beginners@haskell.org
Subject: Re: [Haskell-beginners] question on evaluation
Message-ID: <56936aa3.3010...@free.fr>
Content-Type: text/plain; charset=windows-1252

On 11/01/2016 06:24, Rein Henrichs wrote:
> 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"

Thanks for this "hint" Rein.
But, for now, it's a kind of "forward reference". I will certainly come
up with a similar solution later.

--
Fabien


------------------------------

Subject: Digest Footer

_______________________________________________
Beginners mailing list
Beginners@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners


------------------------------

End of Beginners Digest, Vol 91, Issue 17
*****************************************

Reply via email to