Send Beginners mailing list submissions to
        beginners@haskell.org

To subscribe or unsubscribe via the World Wide Web, visit
        http://www.haskell.org/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:  data, records and functions (Emanuel Koczwara)
   2.  How do I declare a set? (Heinrich Ody)
   3. Re:  How do I declare a set? (David McBride)
   4. Re:  Is my understanding of ">>=" correct? (Sylvain HENRY)


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

Message: 1
Date: Thu, 21 Feb 2013 12:17:28 +0100
From: Emanuel Koczwara <poc...@emanuelkoczwara.pl>
Subject: Re: [Haskell-beginners] data, records and functions
To: peter.h...@memorphic.com, The Haskell-Beginners Mailing List -
        Discussion of primarily beginner-level topics related to Haskell
        <beginners@haskell.org>
Message-ID: <1361445448.20925.8.camel@emanuel-Dell-System-Vostro-3750>
Content-Type: text/plain; charset="UTF-8"

Hi,

Dnia 2013-02-21, czw o godzinie 02:48 +0000, Peter Hall pisze:
> > It's first time I see function type (and where is definition?) in
> record
> > syntax. Can somebody explain this?
> 
> 
> There's no definition, it's a parameter to the constructor, so the
> function can be anything. Taking a much simpler example, you'll be
> familiar with, if you do:
> 
> 
>    data Foo a = Foo a
> 
> 
> then the first argument to the Foo constructor also doesn't have a
> definition. But when you use it to construct a value, then you provide
> one:
> 
> 
>    myFoo = Foo 3
> 
> 
> Likewise, when you construct an Ord value, you supply a function as
> the value for the 'less' parameter:
> 
> 
>    numOrd = Ord { less = (<) }
> 
> 
> or you could use a different function for a different purpose:
> 
> 
>    listLengthOrd = Ord { less = \ a b => length a < length b }
> 
> 
> 
> 
> 
> 
> Hope that helps,
> 
> 
> Peter

  Thanks, it is clear now. I was missing that fields can be functions (a
field can hold a function).

-- here second field is a function
data Command a = Command a (a -> a)

-- do something "useful" with that
executeCommand :: Command a -> a
executeCommand (Command param function) = function param

-- test
executeCommand (Command 5 succ) == 6

  Thank you, it was so simple :)

Emanuel






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

Message: 2
Date: Fri, 22 Feb 2013 00:43:41 +0100
From: Heinrich Ody <heinrich....@gmail.com>
Subject: [Haskell-beginners] How do I declare a set?
To: beginners@haskell.org
Message-ID:
        <camc+g-nsuc0pfwj2hyla8oz_elb-rcmswfhqetxf60yo63d...@mail.gmail.com>
Content-Type: text/plain; charset=ISO-8859-1

Hi,

with [1,2] I can declare a list. Is there a similar notation for sets?
Currently the only way I know is 'Set.fromList [1,2]' which is unhandy...

Regards,
Heinrich



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

Message: 3
Date: Thu, 21 Feb 2013 20:29:08 -0500
From: David McBride <toa...@gmail.com>
Subject: Re: [Haskell-beginners] How do I declare a set?
To: The Haskell-Beginners Mailing List - Discussion of primarily
        beginner-level topics related to Haskell <beginners@haskell.org>
Message-ID:
        <can+tr42ojqejx6bgtqiymu2pezjejnledx4udnjwvrqq5qh...@mail.gmail.com>
Content-Type: text/plain; charset="iso-8859-1"

At the moment, no.  There has been a small push toward an OverloadedLists
extension, which would allow you to use list syntax for anything that has a
fromList (there would probably be an IsList class similar to the IsString
class).  I'm not sure where that has gone.  I know there were several
competing implementations.

On Thu, Feb 21, 2013 at 6:43 PM, Heinrich Ody <heinrich....@gmail.com>wrote:

> Hi,
>
> with [1,2] I can declare a list. Is there a similar notation for sets?
> Currently the only way I know is 'Set.fromList [1,2]' which is unhandy...
>
> Regards,
> Heinrich
>
> _______________________________________________
> Beginners mailing list
> Beginners@haskell.org
> http://www.haskell.org/mailman/listinfo/beginners
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: 
<http://www.haskell.org/pipermail/beginners/attachments/20130221/4ccb3389/attachment-0001.htm>

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

Message: 4
Date: Fri, 22 Feb 2013 11:34:02 +0100
From: Sylvain HENRY <hsy...@gmail.com>
Subject: Re: [Haskell-beginners] Is my understanding of ">>=" correct?
To: beginners@haskell.org, martin.drautzb...@web.de
Message-ID: <5127499a.6040...@gmail.com>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed

Hi,

I tried to explain Haskell IO in an introductory talk. Slides are 
available here:
http://www.sylvain-henry.info/home/data/uploads/teaching/shenry-slides-haskell-intro-2013.pdf

You may find the "Real World Haskell" section interesting to understand 
monads. I use explicit World variables to explain how operations are 
sequenced. It helped me to think about it this way when I learned it.

Cheers
Sylvain


Le 19/02/2013 20:13, Martin Drautzburg a ?crit :
> Hello all,
>
> It took me quite some time to understand >>=. What confused me, was that the
> second operand is a function, not just a Monad. I believe I am beginning to
> see the light.
>
> First there is no way to sequence operations by just writing one after the
> other. However we can chain operations by passing the output of one operation
> to the next. But this does not not allow capturing the intermediate results.
> With >>= the output of one operation gets magically bound to the parameter of
> the function and remains in scope all the way through.
>
> I was confused by the signature m a -> (a -> mb) -> mb because it looks like
> there is (as second parameter) a function which returns a Monad. But I doubt I
> ever saw such a function, in the sense that it does something intelligent. It
> is typically a function that does not do a whole lot with its parameter, but
> just returns another Monad, such that its parameter is bound to the result of
> the previous expression.
>
> But it could be done:
>
> do
>       x <- SomeMonad
>       y <- someCleverlyConstructedMonad x
>
> If I want to see the function of the >>= signature I have to read the do block
> right->left (following the arrow) and then diagonally to the lower right. The
> diagonal steps reveal the function. In the above example we have
>
> \x -> someCleverlyConstructedMonad
>
> but many times I just see
>
> do
>       x <- SomeMonad
>       y <- someOtherMonad
>
> and the function does not do anything intelligent but just binds x and
> enforces the sequence of operations.
>
> is this about right?
>
>




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

_______________________________________________
Beginners mailing list
Beginners@haskell.org
http://www.haskell.org/mailman/listinfo/beginners


End of Beginners Digest, Vol 56, Issue 34
*****************************************

Reply via email to