Valami tanács hogy tudnám javítani a kódomat ?
Adjuk meg azt a függvényt, amely két egész számot kap, és előállítja a köztük értelmezett intervallumot! Például interval 2 5 == [2,3,4,5]. Abban az esetben, ha az első argumentum nagyobb, mint a második, akkor üres listát adjon vissza!
interval :: Int -> Int -> [Int]
interval x y = \x y -> [x..y]
interval x > y = []





Ha csak azt nézzük, hogy error-t kapsz erre, elég sok mindent lehet rajta javítani.
Az első sorban, a lambdát így nem fogod tudni használni, azt majd máshol fogjátok használni, pl. a map használatánál. Ennél a feladatnál felesleges, és rossz is, mert nem működik.
A második sorban az a gond, hogy feltételt nem tudsz bele tenni a pattern-be. Feltételhez az esetszétválasztást kellene használni, azaz:
interval :: Int -> Int -> [Int]
interval x y
| x > y = []
| otherwise = [x..y]
Ha megnézzük a listagenerálást, akkor láthatod, hogy ebben az esetben felesleges a feltétel használata.
[2..5] => [2, 3, 4, 5]
[5] => [5]
[5..2] => []
Tehát elég lenne ennyi is:
interval :: Int -> Int -> [Int]
interval x y = [x..y]
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!