Hogyan tudok listából rendezett párt csinálni haskellben?
A pár első eleme a lista első eleme lenne, a pár második eleme pedig a lista vége.
par :: [a] -> (a, [a])





mintaillesztéssel például
par :: [a] -> (a, [a])
par (l:ls) = undefined










Leírnám, de nem szeretem más háziját megoldani. Nem hiszem, hogy túl nehéz ennek utánanézni.
A keresés meg információszerzés amúgyis fontos ebben a szakmában.





Erre van készen definiélt függvény a Data.List modulban:
import Data.List (uncons)
Abban különbözik egy kicsit a kérdésben kért alakú függvéntől, hogy ez Maybe-be csomagolja adja vissza az eredményt. Tehát azt a könyvtárilag amúgy készen definiált függvényt így lehetne saját kezűleg definiálni:
uncons :: [a] -> Maybe (a, [a])
uncons [] = Nothing
uncons (a:as) = Just (a, as)
Ha valaki biztos benne, hogy nincs szüksége arra, hogy a függvény „totális”, „biztonságos” legyen, vagyis hogy üres listát sosem fog paraméterül adni e függvénynek, akkor így is definiálhat egy ennek megfelelően egyszerűsített típusú („parciális”) függvényt:
uncons_unsafe :: [a] -> (a, [a])
uncons_unsafe [] = error "uncons_unsafe is a partial function"
uncons_unsafe (a:as) = (a, as)
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!