Differences

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

Link to this comparison view

pp:22:laboratoare:haskell:intro [2022/03/26 23:38]
bot.pp created
pp:22:laboratoare:haskell:intro [2022/04/05 09:25] (current)
mihnea.muraru [Resurse]
Line 73: Line 73:
 Există o varietate de compilatoare și interpretoare pentru Haskell. În momentul de față, limbajul și evoluția lui sunt strâns legate de eforturile dezvoltatorilor de la Glasgow. GHC, //The Glorious Glasgow Haskell Compilation System//, este și compilatorul pe care-l vom folosi pentru cursul de PP. Există o varietate de compilatoare și interpretoare pentru Haskell. În momentul de față, limbajul și evoluția lui sunt strâns legate de eforturile dezvoltatorilor de la Glasgow. GHC, //The Glorious Glasgow Haskell Compilation System//, este și compilatorul pe care-l vom folosi pentru cursul de PP.
  
-Pentru a avea o experiență bună cu acest limbaj, recomandarea este să vă instalați [[https://​docs.haskellstack.org/​en/​stable/​install_and_upgrade/​|Haskell Stack]] (citiți instrucțiunile de aici: [[https://​ocw.cs.pub.ro/​courses/​pp/​21/​limbaje|Limbaje]]). Față de compilator și de suita minimală de pachete, Haskell Stack aduce în plus o suită de biblioteci utile pentru dezvoltarea unor aplicații reale.+Pentru a avea o experiență bună cu acest limbaj, recomandarea este să vă instalați [[https://​docs.haskellstack.org/​en/​stable/​install_and_upgrade/​|Haskell Stack]] (citiți instrucțiunile de aici: [[https://​ocw.cs.pub.ro/​courses/​pp/​22/​limbaje|Limbaje]]). Față de compilator și de suita minimală de pachete, Haskell Stack aduce în plus o suită de biblioteci utile pentru dezvoltarea unor aplicații reale.
  
 Codul Haskell poate fi atât compilat cât și interpretat. Pentru interpretare vom folosi **ghci**, iar pentru compilare vom folosi **ghc**. Fișierele de cod Haskell au în mod normal extensia ''​%%.hs%%'',​ dar se poate folosi și ''​%%.lhs%%''​ pentru variantele de **Literate Haskell** (programare ca o poveste - comentariile ocupă majoritatea textului în timp ce secvențele de cod sunt puține - este formatul preferat pentru publicarea de articole despre Haskell pe bloguri, oricine poate copia textul articolului într-un fișier și îl poate compila și rula apoi). Codul Haskell poate fi atât compilat cât și interpretat. Pentru interpretare vom folosi **ghci**, iar pentru compilare vom folosi **ghc**. Fișierele de cod Haskell au în mod normal extensia ''​%%.hs%%'',​ dar se poate folosi și ''​%%.lhs%%''​ pentru variantele de **Literate Haskell** (programare ca o poveste - comentariile ocupă majoritatea textului în timp ce secvențele de cod sunt puține - este formatul preferat pentru publicarea de articole despre Haskell pe bloguri, oricine poate copia textul articolului într-un fișier și îl poate compila și rula apoi).
Line 360: Line 360:
 Fiecare argument este separat prin ''​%%->​%%''​ de următorul sau de rezultat. Fiecare argument este separat prin ''​%%->​%%''​ de următorul sau de rezultat.
  
-Amintindu-ne de discuția despre [[https://​ocw.cs.pub.ro/​courses/​pp/​21/​laboratoare/​racket/​functionale#​functii_curryuncurry|funcții curry și uncurry]], rezultatul următor nu trebuie să ne surprindă+Amintindu-ne de discuția despre [[https://​ocw.cs.pub.ro/​courses/​pp/​22/​laboratoare/​racket/​functionale#​functii_curryuncurry|funcții curry și uncurry]], rezultatul următor nu trebuie să ne surprindă
  
 <​code>​ <​code>​
Line 394: Line 394:
 ===== Domenii de vizibilitate ===== ===== Domenii de vizibilitate =====
  
-Spre deosebire de [[https://​ocw.cs.pub.ro/​courses/​pp/​21/​laboratoare/​racket/​legare|Racket]],​ unde legarea variabilelor la nivelul cel mai de sus (top-level) este dinamică, Haskell leagă definițiile **static**, acestea fiind vizibile implicit la nivel **global**. De exemplu, o definiție de forma:+Spre deosebire de [[https://​ocw.cs.pub.ro/​courses/​pp/​22/​laboratoare/​racket/​legare|Racket]],​ unde legarea variabilelor la nivelul cel mai de sus (top-level) este dinamică, Haskell leagă definițiile **static**, acestea fiind vizibile implicit la nivel **global**. De exemplu, o definiție de forma:
  
 <​code>​ <​code>​
Line 774: Line 774:
 ===== Resurse ===== ===== Resurse =====
  
-  * [[https://​github.com/​cs-pub-ro/​PP-laboratoare/​raw/​haskell-intro/​haskell/​intro/​haskell-cheatsheet-1.pdf|Cheatsheet]]+  * [[https://​github.com/​cs-pub-ro/​PP-laboratoare/​raw/​master/​haskell/​intro/​haskell-cheatsheet-1.pdf|Cheatsheet ​(partea cu list comprehensions,​ funcționale utile și operatori se aplică pentru laboratorul 7)]]
   * [[https://​ocw.cs.pub.ro/​courses/​_media/​pp/​22/​laboratoare/​haskell/​intro-schelet.zip|Schelet]]   * [[https://​ocw.cs.pub.ro/​courses/​_media/​pp/​22/​laboratoare/​haskell/​intro-schelet.zip|Schelet]]
-  * [[https://​ocw.cs.pub.ro/​courses/​_media/​pp/​22/​laboratoare/​haskell/​intro-solutie.zip|Soluții]]+  * [[https://​ocw.cs.pub.ro/​courses/​_media/​pp/​22/​laboratoare/​haskell/​intro-solutii.zip|Soluții]]
  
 ===== Referințe ===== ===== Referințe =====
pp/22/laboratoare/haskell/intro.1648330706.txt.gz · Last modified: 2022/03/26 23:38 by bot.pp
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0