Un exemplu cu operatorul de succesiune a doua calcule unde gasim ?
In Haskell >>=
este compunerea in succesiune a doua calcule. Puteti
sa-mi dati un exemplu?
Ex:
print 3
este o actiune monadica ce afiseaza pe 3 si produce un rezultat (), ea avand tipul IO ()
O functie care primeste x si produce ca rezultat al calculelor actiunea de tiparire a lui x este: (\x -> print x)
Daca le inlantuim cu >>= rezultatul va fi o secventa de doua afisari: iar a doua functie va afisa acea () oferita de prima actiune.
Hugs> print 3 >>= (\ x -> print x)
3
()
Iata alt exemplu, mai reusit:
getChar >>= (\ x -> print x)
6
'6'
getChar asteapta o tasta apasam pe 6 si caracterul '6' va fi trimis functiei urmatoare si afisat.
Insa acest operator >>= se foloseste de fapt ascuns in spatele do-notatiei. Deci unde este scris
do {
....
....
}
de fapt in spatele acestei do-notatii se ascund succesiuni de operatori >>=
Ultimul exemplu de mai sus se putea scrie:
do { x <- getChar; print x; }
7
'7'
si e mult mai usor de inteles asa.
Concluzia: E mai usor de folosit do-notatia decat operatorul >>= .
pagina in dezvoltare