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: monad question (mike h) ---------------------------------------------------------------------- Message: 1 Date: Sat, 14 Oct 2017 19:37:49 +0100 From: mike h <mike_k_hough...@yahoo.co.uk> To: The Haskell-Beginners Mailing List - Discussion of primarily beginner-level topics related to Haskell <beginners@haskell.org> Subject: Re: [Haskell-beginners] monad question Message-ID: <43f9e6c6-0e4e-4ea4-9443-ee1d58916...@yahoo.co.uk> Content-Type: text/plain; charset="utf-8" Thanks David. > On 13 Oct 2017, at 20:13, David McBride <toa...@gmail.com> wrote: > > If you are using do notation, you can't. If you aren't you can write > > tupled s = (rev s, cap s) > > Your old tupled is equivalent to this > > tupled = rev >>= \s -> cap >>= \c -> return (s, c) > > which is quite different. > > On Fri, Oct 13, 2017 at 3:05 PM, mike h <mike_k_hough...@yahoo.co.uk > <mailto:mike_k_hough...@yahoo.co.uk>> wrote: > That certainly helps me David, thanks. > How then would you write >> tupled :: String -> (String, String) > > > with the parameter written explicitly? i.e. > > tupled s = do … > > or does the question not make sense in light of your earlier reply? > > Thanks > > Mike > > > > >> On 13 Oct 2017, at 19:35, David McBride <toa...@gmail.com >> <mailto:toa...@gmail.com>> wrote: >> >> Functions are Monads. >> >> :i Monad >> class Applicative m => Monad (m :: * -> *) where >> (>>=) :: m a -> (a -> m b) -> m b >> (>>) :: m a -> m b -> m b >> return :: a -> m a >> ... >> instance Monad (Either e) -- Defined in ‘Data.Either’ >> instance Monad [] -- Defined in ‘GHC.Base’ >> ... >> instance Monad ((->) r) -- Defined in ‘GHC.Base’ >> >> That last instance means if I have a function whose first argument is type >> r, that is a monad. And if you fill in the types of the various monad >> functions you would get something like this >> >> (>>=) :: ((->) r) a -> (a -> ((-> r) b) -> ((-> r) b) >> (>>=) :: (r -> a) -> (a -> (r -> b)) -> (r -> b) -- simplified >> return :: a -> (r -> a) >> >> So in the same way that (IO String) is a Monad and can use do notation, (a >> -> String) is also a Monad, and can also use do notation. Hopefully that >> made sense. >> >> On Fri, Oct 13, 2017 at 2:15 PM, mike h <mike_k_hough...@yahoo.co.uk >> <mailto:mike_k_hough...@yahoo.co.uk>> wrote: >> >> I have >> >> cap :: String -> String >> cap = toUpper >> >> rev :: String -> String >> rev = reverse >> >> then I make >> >> tupled :: String -> (String, String) >> tupled = do >> r <- rev >> c <- cap >> return (r, c) >> >> and to be honest, yes it’s been a long day at work, and this is coding at >> home rather than coding (java) at work but >> I’m not sure how tupled works!!! >> My first shot was supplying a param s like this >> >> tupled :: String -> (String, String) >> tupled s = do >> r <- rev s >> c <- cap s >> return (r, c) >> >> which doesn’t compile. But how does the first version work? How does the >> string to be processed get into the rev and cap functions?? >> >> Thanks >> >> Mike >> >> >> >> >> _______________________________________________ >> Beginners mailing list >> Beginners@haskell.org <mailto:Beginners@haskell.org> >> http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners >> <http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners> >> >> _______________________________________________ >> Beginners mailing list >> Beginners@haskell.org <mailto:Beginners@haskell.org> >> http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners >> <http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners> > > > _______________________________________________ > Beginners mailing list > Beginners@haskell.org <mailto:Beginners@haskell.org> > http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners > <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/20171014/60f0b911/attachment-0001.html> ------------------------------ Subject: Digest Footer _______________________________________________ Beginners mailing list Beginners@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners ------------------------------ End of Beginners Digest, Vol 112, Issue 14 ******************************************