Difference between revisions of "Care sunt structurile de control in Haskell ?"

From HaskellWiki
Jump to navigation Jump to search
m
m
Line 5: Line 5:
 
if <exp1> then <exp2> else <exp3>
 
if <exp1> then <exp2> else <exp3>
 
avand mai curand sensul din C al operatorului ' ? : '
 
avand mai curand sensul din C al operatorului ' ? : '
  +
  +
Exista si generalizarea lui if , '''case'''-ul. Si mai avem de adaugat aici ceva.
   
 
Ceea ce va lipseste atunci cand programati in stil imperativ in Haskell poate fi,deci,adaugat.
 
Ceea ce va lipseste atunci cand programati in stil imperativ in Haskell poate fi,deci,adaugat.

Revision as of 08:34, 8 June 2007

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 ' ? : '

Exista si generalizarea lui if , case-ul. Si mai avem de adaugat aici ceva.

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 = act >> 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.