Send Beginners mailing list submissions to
[email protected]
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
[email protected]
You can reach the person managing the list at
[email protected]
When replying, please edit your Subject line so it is more specific
than "Re: Contents of Beginners digest..."
Today's Topics:
1. Re: Actions v. Functions (Jos? Romildo Malaquias)
----------------------------------------------------------------------
Message: 1
Date: Sun, 20 Oct 2013 08:42:17 -0200
From: Jos? Romildo Malaquias <[email protected]>
To: The Haskell-Beginners Mailing List - Discussion of primarily
beginner-level topics related to Haskell <[email protected]>
Subject: Re: [Haskell-beginners] Actions v. Functions
Message-ID: <20131020104217.GA16877@jrm>
Content-Type: text/plain; charset=us-ascii
On Sat, Oct 19, 2013 at 07:03:22PM -0700, Rein Henrichs wrote:
> An action in this sense is just a function of type `Monad m => a -> m b'
> (or one where the monad is specified, like `a -> IO b'). This type
> signature fully specifies the "formal properties" of an action and shows
> that actions do not differ from functions: they are merely functions of a
> certain type.
I do not think so. An action is any value of a monadic type
Monad m => m a
An action is just a computation in a monad. When executed, an action of
type `Monad m => m a' performs a computation and returns a value of type
`a'. The nature of the computation depends on the monad being
considered. For instance, actions in the IO monad, when executed,
interacts with the system (to do IO, for instance). Actions in the Maybe
monad may fail or succeed. Actions in the Reader monad can access an
environment carrying some information.
For some monads, an action may be a function, like in the Reader, Writer
and State monads. But that is not a requirement. Actions in the Maybe
and list monads are not functions.
> On Sat, Oct 19, 2013 at 3:23 PM, Brandon Allbery <[email protected]>wrote:
>
> > On Sat, Oct 19, 2013 at 5:09 PM, MJ Williams <
> > [email protected]> wrote:
> >
> >> For example, `main = do input <- getLine ...', where `getLine' is an
> >> action as distinguished from a function such as `main'. Other examples of
> >> actions in Haskell include `print', `putStrLn' and
getLine and main are both actions in the IO monad.
> > Actions aren't so much a formal thing as a conceptual "handle" to help
> > with understanding monads. In particular, what a particular action
> > represents depends on the monad, and in some cases on the particular
> > implementation (for example, an IO action in GHC is a partially applied
> > function, but this is an implementation detail that does nothing to help
> > you understand how to work with it).
------------------------------
Subject: Digest Footer
_______________________________________________
Beginners mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/beginners
------------------------------
End of Beginners Digest, Vol 64, Issue 32
*****************************************