"negate ein Element eine List" < Haskell < Programmiersprachen < Praxis < Informatik < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 01:42 Mi 01.10.2008 | Autor: | haski |
Aufgabe | ich möchte in Haskell eine Funktion programmieren, die das Vorzeichen eines Listen-Elementes umkehrt:
|
Hallo Leute,
ich hoffe es kann mir jemand bei dieser einfachen Aufgabe helfen:
ich möchte in Haskell eine Funktion programmieren, die das Vorzeichen eines Listen-Elementes umkehrt:
z.B:
soll ein ein Int, wenn es in der Liste z.B [1,2,3] vorkommt negieren.
Eingabe Ausgabe
negate1 1 [1,2,3] -----> [-1,2,3]
negate1 -2 [1,-2,3,4] ----> [1,2,3,4]
Eigene Ideen und Lösungsansätze
negate1 :: Int -> [Int] -> [Int]
negate1 u (x:xs) | u == x = negate x : negate1 u xs
erhalte aber Fehlermeldung
[-1*** Exception ........ Non-exhaustive pattern]
Hoffentlich weiß einer was ich falsch mache
Gruß
Haski
Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 11:30 Mi 01.10.2008 | Autor: | jutaro |
Hallo Haski,
da fehlt der Fall wenn u nicht gleich x ist:
negate1 u (x:xs) = x : negate1 u xs
ich glaube man kann auch sowas schreiben wie
| otherwise = x : negate1 u xs
und der Fall wenn die Liste leer ist:
negate1 _ [] = []
Gruß
Jutaro
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 00:15 Do 02.10.2008 | Autor: | haski |
Danke dir Jutaro, es hat geklappt:
negateL :: Int -> [Int] -> [Int]
negateL _ [] = []
negateL u (x:xs) | u == x = negate x : negateL u xs
| otherwise = x : negateL u xs
Gruß
Haski
|
|
|
|