User Tools

Site Tools


laboratoare:01-functii-recursive

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
laboratoare:01-functii-recursive [2016/02/29 22:01]
calin.cruceru [Soluții laborator]
laboratoare:01-functii-recursive [2016/02/29 23:45] (current)
calin.cruceru [Tail recursion]
Line 32: Line 32:
 ===== Tipuri de date în Haskell ===== ===== Tipuri de date în Haskell =====
  
-Haskell este un limbaj ​tare-tipat (strongly-typed) care poate face type inference. Asta înseamnă că tipul tuturor expresiilor este cunoscut la **compilare**;​ dacă nu este explicit, compilatorul îl //deduce//.+Haskell este un limbaj tipat static ​(statically ​typed) care poate face type inference. Asta înseamnă că tipul tuturor expresiilor este cunoscut la **compilare**;​ dacă nu este explicit, compilatorul îl //deduce//. Deasemenea, Haskell este tare tipat (strongly typed), ceea ce înseamnă că trebuie să existe conversii implicite între diferite tipuri de date.
  
 ==== Tipuri de bază ==== ==== Tipuri de bază ====
Line 232: Line 232:
 <note important>​ <note important>​
 Folosirea unui acumulator în acest scop este un tipar des întâlnit, util pentru că poate permite reducerea spațiului de stivă necesar de la O(n) la O(1). Unele limbaje (e.g. C) nu garantează această optimizare, care depinde de compilator.\\ Folosirea unui acumulator în acest scop este un tipar des întâlnit, util pentru că poate permite reducerea spațiului de stivă necesar de la O(n) la O(1). Unele limbaje (e.g. C) nu garantează această optimizare, care depinde de compilator.\\
-Standardul ​Haskell ​garantează implementarea ​tail-recursion.+ 
 +Modul în care Haskell ​asigură tail-recursion ​o să fie mai clar când vom discuta despre modul de evaluare al funcțiilor. Tot atunci vom vedea și **capcanele** acestuia.
 </​note>​ </​note>​
  
Line 291: Line 292:
 ==== Referințe ==== ==== Referințe ====
   * [[http://​learnyouahaskell.com/​|Learn you a Haskell for Great Good]]   * [[http://​learnyouahaskell.com/​|Learn you a Haskell for Great Good]]
 +  * [[http://​worrydream.com/​refs/​Hughes-WhyFunctionalProgrammingMatters.pdf|Why Functional Programming Matters]] 
 +  * [[https://​wiki.haskell.org/​Why_Haskell_matters|Why Haskell Matters]] 
 +  * [[http://​book.realworldhaskell.org/​|Real World Haskell]]
 ==== Soluții laborator ==== ==== Soluții laborator ====
   * [[https://​github.com/​Programming-Paradigms/​Labs/​archive/​master.zip|Soluții laborator 1]]   * [[https://​github.com/​Programming-Paradigms/​Labs/​archive/​master.zip|Soluții laborator 1]]
   * Puteti, alternativ, să folosiți următorul [[https://​github.com/​Programming-Paradigms/​Labs.git|repository git]] pentru a descărca soluțiile și a le sincroniza, ulterior.   * Puteti, alternativ, să folosiți următorul [[https://​github.com/​Programming-Paradigms/​Labs.git|repository git]] pentru a descărca soluțiile și a le sincroniza, ulterior.
   * Git și GitHub [[https://​try.github.io| - tutorial]].   * Git și GitHub [[https://​try.github.io| - tutorial]].
laboratoare/01-functii-recursive.1456776092.txt.gz · Last modified: 2016/02/29 22:01 by calin.cruceru