Listák

Konkrét listák

Test>
Test>
Test>

Számít a sorrend és a multiplicitás:

Test>
True :: Bool
Test>
True :: Bool

A listák homogének, azaz csak azonos típusú elemeket tartalmazhatnak!

Test>
<interactive>:1:2: error:
    • No instance for (Num Bool) arising from the literal ‘1’
    • In the expression: 1
      In the expression: [1, True]

A listák homogenitása a szigorú típusozás miatt szükséges. (Inhomogén listák mindig helyettesíthetőek homogén listákkal, lásd később.)

A [13] és 13 teljesen különböző értékek, még csak nem is összehasonlíthatóak.

Szövegek

'a' :: Char

Karakter literálok:
'a', 'ű', '\369', '\\', '\n' :: Char

"alma" :: [Char]

Szöveg literálok:
"alma", "\n\n", "" :: String

A szöveg nem más, mint karakterlista:

Test>
"abc" :: [Char]

A String a [Char] szinonimája.

Pontpont kifejezések

A négy forma:

Test>
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] :: [Integer]
Test>
[1, 3, 5, 7, 9] :: [Integer]
Test>
Test>

Ilyet is lehet:

Test>
"abcdefghijklmnopqrstuvwxyz" :: [Char]

Három alapvető művelet listákon

length :: [a] -> Int
Test>
3 :: Int
(!!) :: [a] -> Int -> a
Test>
'b' :: Char
(++) :: [a] -> [a] -> [a]
Test>
"hello" :: [Char]

Figyelem: (!!) nullától számozza a listaelemeket.

Feladat: 10, 9, 8, …, -9, -10

Soroljuk fel 10-től visszafelé -10-ig a számokat!

Solution>

Feladat: Számtani sorozat n-edik eleme

Adjuk meg a 113. elemét annak a számtani sorozatnak, amelynek az első két eleme 11 és 32!

Solution>

Feladatok

Mi az alábbi kifejezések típusa?

Test>
Test>
Test>
Test>
Test>

Szumma és produktum

sum :: (Foldable t, Num a) => t a -> a
Test>
product :: (Foldable t, Num a) => t a -> a
Test>

Feladat: 10 elem sorbarendezéseinek a száma

Hányféleképpen lehet sorba rendezni 10 különböző elemet?

Solution>

Feladat: Kombinációk száma

Hányféleképpen választhatunk ki 70 különböző elemből 30 elemet?

Solution>

Használjuk a div függvényt!

Feladatok

Mi a több: az univerzumban az atomok száma, vagy 100 elem különböző sorba rendezéseinek a száma?

Test>
Test>

A 5-ös vagy a 6-os lottón könnyebb a telitalálat?

Test>
Test>