Difference between revisions of "Care sunt structurile de control in Haskell ?"
m |
m |
||
Line 1: | Line 1: | ||
+ | [[Category:Ro]] |
||
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. |
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. |
||
Line 24: | Line 25: | ||
Si nu uitati: Programarea "imperativa" in Haskell este de fapt evaluare lazy a unor succesiuni de >>= (bind-uri) dintr-o monada. Uzual monada de I/O. Iar do-notatia functioneaza ca un fel de macrodefinitie care prin expandare produce acele succesiuni de bind-uri. |
Si nu uitati: Programarea "imperativa" in Haskell este de fapt evaluare lazy a unor succesiuni de >>= (bind-uri) dintr-o monada. Uzual monada de I/O. Iar do-notatia functioneaza ca un fel de macrodefinitie care prin expandare produce acele succesiuni de bind-uri. |
||
+ | ---- |
||
− | |||
+ | Pagina indexata la indexul [[Category:Ro]] [http://www.haskell.org/haskellwiki/Category:Ro Categories:Ro] |
||
− | |||
+ | ---- |
||
− | [http://www.haskell.org/haskellwiki/Ro/Haskell <= Inapoi la pagina principala Ro/Haskell ] |
+ | [http://www.haskell.org/haskellwiki/Ro/Haskell <= Inapoi la pagina principala Ro/Haskell. ]<br> <br> |
+ | [http://www.haskell.org/haskellwiki/Intrebarile_incepatorului <'''-''' Inapoi la Intrebarile incepatorului Ro/Haskell. ] |
Revision as of 09:59, 21 January 2008
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 complicat 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.
Si nu uitati: Programarea "imperativa" in Haskell este de fapt evaluare lazy a unor succesiuni de >>= (bind-uri) dintr-o monada. Uzual monada de I/O. Iar do-notatia functioneaza ca un fel de macrodefinitie care prin expandare produce acele succesiuni de bind-uri.
Pagina indexata la indexul Categories:Ro
<= Inapoi la pagina principala Ro/Haskell.
<- Inapoi la Intrebarile incepatorului Ro/Haskell.