Típusok
- Due May 21, 2023 by 11:59pm
- Points 10
- Submitting a file upload
Az alábbi feladatok közül az első kettő 1-1 pontot ér, a 4-es 2 pontot valamint a 3. és 5. feladat 3-3 pontot.
1. Nevesített típusok
- Definiáljuk a String típust mint karakterek listáját!
- Definiáljuk a Year típust mint egész számot!
- Definiáljuk a sakktábla mezőit mint karakter + egész párokat!
2. Paraméterezett nevesített típusok
- Definiáljuk a két mélységű listákat!
- Definiáljuk a két dimenziós pontokat általában!
3. Algebrai adattípusok
- Definiáljuk a kiterjesztett Answer típust, melynek lehetséges válaszai: Yes, No, Maybe!
- Implementáljuk a logikai és függvényt az Answer típusra!
- Implementáljuk a logikai vagy függvényt az Answer típusra!
- Definiáljuk a négy égtájat!
- Implementáljuk a 90 fokos balra fordulást!
- Implementáljuk a 90 fokos jobbra fordulást!
- Implementáljuk a 180 fokos fordulást!
- Definiáljuk a bitet!
- Definiáljuk a bináris számokat, mint bitek listáját (type kulcsszóval)!
- [One, One] :: Binary
- [Zero, Zero, One] :: Binary
- Instanciáljuk a típusra Show típusosztályt, mely fordított sorrendben írja ki a számsort (így könnyebb az összeadás).
-
Implementáljuk a
plus1
függvényt ami megmondja milyen szám a következő! - plus1 [One, One] ⇒ [Zero, Zero, One] :: Binary
- Implementáljuk az összeadást!
- [Zero, One] `add` [One, One] ⇒ [One, Zero, One] :: Binary
4. Paraméterezett algebrai adattípusok
- Implementáljuk a biztonságos div függvényt!
- safeDiv :: Integral a => a -> a -> Maybe a
- 10 `safeDiv` 0 ⇒ Nothing :: Maybe Integer
- 10 `safeDiv` 4 ⇒ Just 2 :: Maybe Integer
- Implementáljuk a biztonságos fejelem (head) függvényt!
- Definiáljuk a párokat (két elemű tuple típust)!
- Definiáljuk a hármasokat!
5. Rekurzív algebrai adattípusok
Definiáljuk az imperatív nyelvekből ismerős tömbök fogalmát egy quad-fa adatstruktúrával (minden csomópont négybe ágazik).
[1, 3, 2, 4, 3, 5, 4, 6, 5, 7, 6, 8] ⇒ Array (Array (1, 3, 2, 4) Array (3, 5, 4, 6) Array (5, 7, 6, 8) Empty)
Implementáljuk az alábbi tipikus tömbműveleteket:
- Egy adott méretű tömb létrehozása
- A tömb egy elemének a felülírása
- A tömb egy elemének a kiolvasása