This shows you the differences between two versions of the page.
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 ===== |