Care sunt structurile de control in Haskell ?

From HaskellWiki
Revision as of 08:31, 8 June 2007 by Ha$kell (talk | contribs)
Jump to navigation Jump to search

Haskell fiind limbaj functional cu "lazy evaluation" nu are structuri de control in sensul din limbajele imperative. Dar le puteti inventa si folosi pe cele dorite de dumneavoastra ! Flexibilitate maxima.

In Haskell if then else este un operator conditional

if <exp1> then <exp2> else <exp3>

avand mai curand sensul din C al operatorului ' ? : '

Ceea ce va lipseste atunci cand programati in stil imperativ in Haskell poate fi,deci,adaugat. Repet: Haskell permite sa va definiti propriile structuri de control pentru programarea "imperativa" dar (sunt mai usor de facut) fara variabile locale in vre-un context. Deci puteti defini imediat un for care cicleaza parcurgand valorile dintr-o lista si e ceva mai greu de facut un for care modifica o variabila dintr-un context. Exemple clasice de programare cu actiuni (monadice) repetate:

myforever :: IO () -> IO ()
myforever action = action >> myforever action

myrepeat :: Int -> IO a -> IO ()
myrepeat 0 act = return ()
myrepeat n act = action >> myrepeat (n-1) act

Dupa "Tackling the Awkward Squad:..." de Simon Peyton Jones. Neaparat de citit cap 2.4 - Control structures din ea. Apoi 2.5.