# Haskell Strings vergleichen



## Sonnenblume123 (8. Jul 2018)

Hallo,

Die Aufgabe lautet:
Implementieren Sie eine Verarbeitung von Kommandozeilenparametern mittels pattern matching in Haskell! Folgende Switches müssen verarbeitet werden:
-r setzt result auf -3
-k setzt result auf 1
-i addiert 1 zu result
-h halbiert result (gemäß Integer-Division)
-t verdreifacht result
Fügen Sie Ihre Implementierung ans Ende an.

Ich habe folgenden Code gegeben:

```
import System.Environment

main = getArgs >>= print . (foldr apply 0) . reverse

apply :: String -> Integer -> Integer
```

Was ich bisher habe:
Also ich hab verstanden, dass apply als Parameter einen String und einen Integer bekommt und der Rückgabetyp ein Integer wieder ist. Weil wir in dem vorgegeben Code kein result gegeben haben, dachte ich, dass es hier das foldr (initialisiert mit 0) ist. Aus der main-Funktion werde ich aber nicht wirklich schlau zum Beispiel das reverse oder >>= ). Hoffe ihr könnt sie mir erklären

Mein Code:

```
import System.Environment

main = getArgs >>= print . (foldr apply 0) . reverse

apply :: String -> Integer -> Integer
apply foldr | getArgs == -r -> -3 -> -3
            | getArgs == -k -> 1 -> 1
            | getArgs == -i -> foldr+1 -> foldr+1
            | getArgs == -h -> foldr/2 -> foldr/2
            | getArgs == -t -> foldr*3 -> foldr*3
            |otherwise = 0
```

Allerdings wird mir gesagt, dass ich einen Parse Error auf dem Input -> hab. Verstehe aber nicht wieso.

Vielen Dank im Voraus


----------

