Un exemplu cu operatorul de succesiune a doua calcule unde gasim ?

From HaskellWiki
Revision as of 09:17, 8 February 2010 by Ha$kell (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.


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