(toiminnot)

hwechtla-tl: Nettipäiväkirja 01.08.2018

Kierre.png

Mikä on WikiWiki?
nettipäiväkirja
koko wiki (etsi)
viime muutokset


Taas kirjoitussuositus: http://blog.sigfpe.com/2007/04/trivial-monad.html

Kommenteissa pohdiskellaan, miten h toteutetaan. Tässä on kolme tapaa:

Prelude> data W x = W x deriving Show
Prelude> instance Functor W where fmap f (W x) = W (f x)
Prelude> instance Applicative W where pure = W; W f <*> W x = W (f x)
Prelude> instance Monad W where W x >>= f = f x

Perinteinen monadinen ohjelmointi:

Prelude> h wx wy = wx >>= \x -> wy >>= \y -> return $ x+y
Prelude> :type h
h :: (Monad m, Num b) => m b -> m b -> m b

Monadikirjaston liftM2:

Prelude> import Control.Monad
Prelude Control.Monad> h2 = liftM2 (+)
Prelude Control.Monad> :t h2
h2 :: (Monad m, Num r) => m r -> m r -> m r

ap-kombinaattori, joka vastaa Applicativen <*>-operaattoria. Kirjoitettu applikatiiviseen tyyliin. (Voisi sanoa myös (+) <$> wx <*> wy.)

Prelude Control.Monad> h3 wx wy = ((+) <$> wx) `ap` wy
Prelude Control.Monad> :type h3
h3 :: (Monad m, Num b) => m b -> m b -> m b


kommentoi (viimeksi muutettu 01.08.2018 12:46)