Skip to content

Commit

Permalink
fix: added fixes to lab 7 demo
Browse files Browse the repository at this point in the history
docs: fixed newtype definition in lab8
  • Loading branch information
florinrm committed Apr 20, 2024
1 parent b35ae8b commit db44043
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 9 deletions.
6 changes: 3 additions & 3 deletions haskell/evaluare-lenesa/schelet/exemple.hs
Original file line number Diff line number Diff line change
Expand Up @@ -34,11 +34,11 @@ este evaluată prin selectarea consecutivă a elementelor din `listX`, testarea
predicatului `testX`, selectarea din `listY` (dacă `testX` este satisfăcut),
... Varianta cu funcționale ar arăta
map (\x y ... -> expr) $ ... $ filter testXY $ zip listY $ filter testX listX
map (\x y ... -> expr) $ ... $ filter testXY $ map (\[x, y] -> (x, y)) $ sequence [listY, filter testX listX]
Funcțiile de mai sus, se traduc -- după ceva simplificări -- în:
-}
naturals' = [0 ..] -- map id $ filter (\x -> True) [0 ..]
increasingPairs' = filter (\(y, x) -> x < y) $ zip naturals naturals
-- ^ observați folosirea `zip` și o funcție uncurry pentru `filter`
increasingPairs' = filter (\(x, y) -> x < y) $ map (\[x, y] -> (x, y)) $ sequence [naturals, naturals]
-- ^ observați folosirea `sequence` și o funcții uncurry pentru `filter` și pentru `map`
factorials' = map factorial naturals
8 changes: 4 additions & 4 deletions haskell/evaluare-lenesa/solutii/exemple.hs
Original file line number Diff line number Diff line change
Expand Up @@ -28,17 +28,17 @@ Cum se traduc list-comprehensions în expresii simple cu funcționale?
O expresie de forma
[expr | x <- listX, testX, y <- listY, testXY, ...]
[expr | x <- listX, textX, y <- listY, testXY, ...]
este evaluată prin selectarea consecutivă a elementelor din `listX`, testarea
predicatului `testX`, selectarea din `listY` (dacă `testX` este satisfăcut),
... Varianta cu funcționale ar arăta
map (\x y ... -> expr) $ ... $ filter testXY $ zip listY $ filter testX listX
map (\x y ... -> expr) $ ... $ filter testXY $ map (\[x, y] -> (x, y)) $ sequence [listY, filter testX listX]
Funcțiile de mai sus, se traduc -- după ceva simplificări -- în:
-}
naturals' = [0 ..] -- map id $ filter (\x -> True) [0 ..]
increasingPairs' = filter (\(y, x) -> x < y) $ zip naturals naturals
-- ^ observați folosirea `zip` și o funcție uncurry pentru `filter`
increasingPairs' = filter (\(x, y) -> x < y) $ map (\[x, y] -> (x, y)) $ sequence [naturals, naturals]
-- ^ observați folosirea `sequence` și o funcții uncurry pentru `filter` și pentru `map`
factorials' = map factorial naturals
4 changes: 2 additions & 2 deletions haskell/tipuri/README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Haskell: Tipuri de date utilizator

- Data publicării: 10.04.2024
- Data ultimei modificări: 10.04.2024
- Data ultimei modificări: 19.04.2024

## Obiective

Expand Down Expand Up @@ -253,7 +253,7 @@ data Natural = Zero | Succ Natural deriving Show

## newtype

Construcția `newtype` este similară cu `data`, cu diferența că ne permite crearea unui tip de date cu **un singur** constructor, pe baza altor tipuri de date existente. De exemplu:
Construcția `newtype` este similară cu `data`, cu diferența că ne permite crearea unui tip de date cu **un singur** constructor și **cu un singur** câmp, pe baza altor tipuri de date existente. De exemplu:

```haskell
newtype Celsius = MakeCelsius Float deriving Show
Expand Down

0 comments on commit db44043

Please sign in to comment.