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

From HaskellWiki
Revision as of 09:13, 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 va afisa () oferita de prima.


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 do { .... .... }

Ultimul exemplu 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