PrologBegin
Grünschnabel
Hallo,
das ist mein allererster Beitrag in diesem Forum
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 von switch.hs 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. Hoffe ihr könnt sie mir erklären
Mein Code dazu (hoffe, dass ich da nicht völligen Mist produziert hab):
das ist mein allererster Beitrag in diesem Forum
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 von switch.hs 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. Hoffe ihr könnt sie mir erklären
Mein Code dazu (hoffe, dass ich da nicht völligen Mist produziert hab):
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