Personal tools

De ce nu pot folosi lazy evaluation si atribuiri ?

From HaskellWiki

(Difference between revisions)
Jump to: navigation, search
(New page: Category:Ro Lazy evaluation, un mecanism dinamic care schimba ordinea calculelor din program ... aici sunt multe de spus ... (deoarece schimba dinamic ordinea) ''nu garanteaza'' secv...)
 
 
(3 intermediate revisions by one user not shown)
Line 1: Line 1:
[[Category:Ro]]
+
[[Image:Haskelllogo-small-flag-RO-8.jpg|center|Haskell - Un limbaj functional pur]]
  +
  +
<center>
  +
Contactul cu un limbaj de programare nou naste intrebari, mai ales cand este vorba de un limbaj atat de inovator. Cea mai buna cale de a va familiariza cu Haskell este sa conversati cu un interpretor, cum este Hugs. Sau sa folositi GHC si sa conversati cu GHCi (GHC Interactiv).
  +
  +
</center>
  +
__NOTOC__
  +
<center>
  +
{| border=0 cellspacing=5 cellpadding=15
  +
| valign=top bgcolor=#F0F0F0 style="text-align:left" |
  +
[[Category:Ro]]
 
Lazy evaluation, un mecanism dinamic care schimba ordinea calculelor din program ... aici sunt multe de spus ...
 
Lazy evaluation, un mecanism dinamic care schimba ordinea calculelor din program ... aici sunt multe de spus ...
   
Line 6: Line 6:
 
Asa ca nu puteti folosi atribuiri (in sensul din alte limbaje) in functiile Haskell pure.
 
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]].
+
Dar exista altceva, util daca de exemplu doriti variabile locale: [[Expresii let]] si [[Clauza where]].
   
 
==.Exemple ==
 
==.Exemple ==
Line 38: Line 38:
   
 
== Clauza where ==
 
== Clauza where ==
Cautati in manualul [[Gentle]] - are sio o editie in limba romana de acum.
+
Cautati in manualul [[Gentle]] - are si o editie in limba romana de acum.
 
Manualul este editat de MatrixRom.
 
Manualul este editat de MatrixRom.
 
Sau in [[Introducere in Haskell 98 prin exemple]].
 
Sau in [[Introducere in Haskell 98 prin exemple]].
Line 69: Line 69:
 
Main>
 
Main>
   
  +
</haskell>
 
Si chestia asta a determninat firme de experti sa programeze [[Contabilitate in Haskell]]. Va dati seama de ce ?
 
Si chestia asta a determninat firme de experti sa programeze [[Contabilitate in Haskell]]. Va dati seama de ce ?
 
</haskell>
 

Latest revision as of 21:01, 16 July 2011

Haskell - Un limbaj functional pur

Contactul cu un limbaj de programare nou naste intrebari, mai ales cand este vorba de un limbaj atat de inovator. Cea mai buna cale de a va familiariza cu Haskell este sa conversati cu un interpretor, cum este Hugs. Sau sa folositi GHC si sa conversati cu GHCi (GHC Interactiv).

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.

[edit] 1 .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

[edit] 2 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.

[edit] 3 .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 ?