Gepostet: |
Exception werfen? | ||||||||||
Select the nth element of a list: (!!) :: [a ] → Int → a Diese Aufgabe habe ich wie folgt gelöst: (!!!) :: [a] -> Int -> a (!!!) x a = head (drop a x) allerdings würde ich hier gerne noch eine Exception bei zu großem oder zu kleinem Index werfen. Die Fallunterscheidung würde ich mit Guards lösen, aber was dann? Brauch ich dazu evtl. Monaden? Grüße domjoe |
|||||||||||
Zum Seitenanfang | |||||||||||
Gepostet: |
|||||||||||
Wenn ich es mit Rekursion löse, habe ich meine Exceptions: (!!!) :: [a] -> Int -> a (!!!) (x:xs) a | a == 0 = x |otherwise = (!!!) xs (a-1) Die ursprüngliche Frage stellt sich mir allerdings immer noch! |
|||||||||||
Zum Seitenanfang | |||||||||||
Gepostet: |
|||||||||||
Schau Dir die Funktion in Deinem ersten Beitrag mal an, was die tatsächlich auswirft und ob es tatsächlich das nte Element der Liste ist..... Gerade gesehen: Du fängst absichtlich bei 0 an zu zählen, oder? Möchtest Du das auch für den Bediener so haben, also dass, wenn jemand (!!!) [1,2,4] 3 eingibt er eine Fehlermeldung bekommt? Grüße Viviane |
|||||||||||
Zum Seitenanfang | ICQ | ||||||||||
Gepostet: |
|||||||||||
Ja, dass ist so gewollt! Ich habe mich da an der originalen Funktion (!!) orientiert. Zumal ich es auch aus anderen Programmiersprachen so kenne, dass z.B. das erste Element eines Arrays mit 0 indexiert wird. | |||||||||||
Zum Seitenanfang | |||||||||||