addressalign-toparrow-leftarrow-rightbackbellblockcalendarcameraccwchatcheckchevron-downchevron-leftchevron-rightchevron-small-downchevron-small-leftchevron-small-rightchevron-small-upchevron-upcircle-with-crosscrosseditemptyheartfacebookfolderfullheartglobegmailgoogleimagesinstagramlinklocation-pinmagnifying-glassmailminusmoremuplabelShape 3 + Rectangle 1outlookpersonplusprice-ribbonImported LayersImported LayersImported Layersshieldstartrashtriangle-downtriangle-uptwitteruseryahoo

Lambda Lounge Kraków Message Board › monads and functors in examples

monads and functors in examples

Wieslaw P.
user 75200902
Kraków, PL
Post #: 1
Some two weeks ago we have discussed about categories objects in functional languages. I just want to verify my understanding of functor or monad (which is a functor as well) with a small scala example. Below I put something I believe is a state monad. I know that this is easily handled just by 'var' so monad is the overkill but it's just an example as I said. Could anyone verify if my 'monad' is somehow correct? (code not tested in scala so may be wrong :) )

case class StateMonad[T](state: T) {
def map(f: T => T): StateMonad[T] = {
new StateMonad[T](f(state))
}

def flatten[T](stateMonad: StateMonad[T]) {
stateMonad.state match {
case StateMonad(state) => stateMonad.state
case _ => new StateMonad(stateMonad.state)
}
}
}

val initial = new StateMonad[Int](5)
val result = initial.map(_ + 2).map(_ * 5)
assert result == 35
LAFK
user 65937412
Kraków, PL
Post #: 1
Wiesiek, próbowałeś praw Monad? http://eed3si9n.com/l...­

OIDP Scalaz ma nawet jakieś zestawy testów do tego. :-)

Scusi, że teraz, po prostu maili z meetup'ów tyle, że dawno już zdefiniowałem regułę na wszystkie i dopiero łapię wyjątki.
Wieslaw P.
user 75200902
Kraków, PL
Post #: 2
sprawdzę sobie, dzięki za radę. Generalnie to chodzi mi o to, że w sumie monada jest opakowaniem ze specyficzną funkcją mapującą. Wydaje mi się, że State monadę można po prostu zaimplementować jako 1-elementową listę (albo nawet Option) ale funkcja mapująca powinna przyjmować i zwracać ten sam typ tzn stan wewnętrzny nie powinien zmieniać swojego typu po aplikacji mapowania.
Powered by mvnForum

Our Sponsors

People in this
Meetup are also in:

Sign up

Meetup members, Log in

By clicking "Sign up" or "Sign up using Facebook", you confirm that you accept our Terms of Service & Privacy Policy