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


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