Difference between revisions of "De ce nu pot folosi lazy evaluation si atribuiri ?"
Line 68: | Line 68: | ||
10 |
10 |
||
Main> |
Main> |
||
− | |||
⚫ | |||
</haskell> |
</haskell> |
||
⚫ |
Revision as of 20:52, 16 July 2011
Lazy evaluation, un mecanism dinamic care schimba ordinea calculelor din program ... aici sunt multe de spus ...
(deoarece schimba dinamic ordinea) nu garanteaza secventialitatea cu care sunteti obisnuiti la atribuirile din limbajele traditionale. Acolo, stiati, unde ordinea atribuirilor conteaza la obtinerea rezultatului.
Asa ca nu puteti folosi atribuiri (in sensul din alte limbaje) in functiile Haskell pure.
Dar exista altceva, util daca de exemplu doriti variabile locale: [Expresii let]] si Clauza where.
.Exemple
let x = 1
y = 2
in x+y
let x = 1
y = 2
in f(x,x+y)
let x = 1
y = 2
in print x+y
Clauza where
Cautati in manualul Gentle - are si o editie in limba romana de acum. Manualul este editat de MatrixRom. Sau in Introducere in Haskell 98 prin exemple.
.Avantaje
Haskell permite calculul cu functii cu valoare constamta in orice ordine ar fi scrise:
Ati scris:
x = y +z
y = 1
z = 10
Ruleaza perfect !! Verificati.
Main> x
11
Main> y
1
Main> z
10
Main>
Si chestia asta a determninat firme de experti sa programeze Contabilitate in Haskell. Va dati seama de ce ?