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:
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:
Allerdings wird mir gesagt, dass ich einen Parse Error auf dem Input -> hab. Verstehe aber nicht wieso.
Vielen Dank im Voraus
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:
Code:
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:
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