Witam.
Uczę się haskell'a i natknąłem się na coś czego nie rozumiem do końca. Mianowicie są to monady. Monady umożliwiają bezproblemowe operacje we - wy ale są też inne służące do czegoś innego (logowanie, czytanie, wyjątki). TO tam znalazłęm:
http://en.wikibooks.org/wiki/Haskell/Understanding_monads
Czyli wciąż raczej nie rozumiem do czego służą monady. Wnioskuję że jest zbiór jakichś konkretnych funkcji.
Proszę o przybliżenie mi problemu. Może ktoś doda coś od siebie (jakąś łątwą definicję, ciekawy przykład).
Pozdrawiam
- Rejestracja:prawie 13 lat
- Ostatnio:ponad 12 lat
- Postów:11
- Rejestracja:około 18 lat
- Ostatnio:około rok
http://stackoverflow.com/questions/2704652/monad-in-plain-english-for-the-oop-programmer-with-no-fp-background
Monady w ujęciu programowania funkcyjnego w C# (nie mogło być inaczej, bo odpowiadał Eric Lippert), ale ogólne pojęcie będzie te same.

- Rejestracja:około 20 lat
- Ostatnio:29 minut
Primo: polecam kurs http://learnyouahaskell.com/
Secundo: Zarówno na LYAH jak i np na http://www.haskell.org/haskellwiki/All_about_monads masz przykłady wielu rodzajów monad. Dla przykładu najprostsza monada Maybe wraz z notacją do pozwala na uniknięcie wielu sprawdzeń czy coś jest nullem.
Przykład z LYAH:
-- wersja monadyczna z notacją do
routine :: Maybe Pole
routine = do
start <- return (0,0)
first <- landLeft 2 start
second <- landRight 2 first
landLeft 1 second
-- wersja niemonadyczna
routine :: Maybe Pole
routine =
case Just (0,0) of
Nothing -> Nothing
Just start -> case landLeft 2 start of
Nothing -> Nothing
Just first -> case landRight 2 first of
Nothing -> Nothing
Just second -> landLeft 1 second
Tertio: to już jako ciekawostka - for-comprehension w Scali to coś bardzo podobnego do do-notation z Haskella - też operuje na monadach (i np kolekcje w Scali są monadami).


Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.