Kezdőoldal » Számítástechnika » Programozás » Valami tanács hogy tudnám...

Valami tanács hogy tudnám javítani a kódomat ?

Figyelt kérdés

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 = []



2021. okt. 10. 19:57
 1/3 anonim ***** válasza:
Első körben mondjuk használj értelmes változó neveket.
2021. okt. 10. 20:34
Hasznos számodra ez a válasz?
 2/3 anonim válasza:
100%

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]

2021. okt. 10. 20:37
Hasznos számodra ez a válasz?
 3/3 A kérdező kommentje:
Úgy látszik kicsit túlbonyolítottam. Köszi a magyarázatot.
2021. okt. 10. 20:54

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!