Haskell Strings vergleichen

Sonnenblume123

Aktives Mitglied
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:
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ärenupload_2018-7-8_13-5-23.gif:)

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:)
 

Anhänge

  • upload_2018-7-8_13-4-25.gif
    upload_2018-7-8_13-4-25.gif
    42 Bytes · Aufrufe: 21

Ähnliche Java Themen


Oben