www.jammni.de

Logo - Kleiner Drache
Login
Username:

Passwort:

Daten merken
Auto-Login
Registrieren
 
Online
niemand
 
Forumsuche
Suche nach:

Logo - DracheHaskell-Forum

domjoe

Gepostet:
05.03.2011 16:50

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    
 
domjoe

Gepostet:
05.03.2011 17:38

   
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    
 
Viviane

Gepostet:
05.03.2011 18:45

   
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    
 
domjoe

Gepostet:
06.03.2011 09:55

   
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