haskell : problem mit 2 user inputs

striker159

Lt. Junior Grade
Registriert
Dez. 2008
Beiträge
333
hi
ich stehe vor einem kleinen problem mit haskell
ich möchte 2 zahlen von der konsole einlesen und diese dann weiter verarbeiten.
bis jetzt sieht das ganze so aus

Code:
do
                         a<- (getA)
                         b<- (getB)
                         if (isDigit a) && (isDigit b) 
                               then putStrLn "OK"
                               else putStrLn "Wrong Input"

das problem ist, dass ich nur 1 eingabe machen kann. dann wird immer wrong input ausgeben. also ausgabe:
Code:
Please enter number A
1
Please enter number B
Wrong Input

kann mir da einer weiterhelfen?
 
Ich kann haskell jetzt mal gar nicht, aber kann es sein, das nach Bestätigen der ersten Eingabe mit Enter die Steuerzeichen CR und LF bei der zweiten Eingabe gelesen und als falsch angenommen werden?
 
Es wäre hilfreich, wenn du getA und getB dazuschreiben würdest :)
 
na, getA und getB sind eigentlich nichts besonderes

Code:
getA :: IO Char
getA  = do 
                   putStr "Please enter number A"
                   putChar '\n'
                   xs <- getChar 
                   return xs
analog getB
 
Was Krise sagte, ist korrekt. Wenn du 2mal hintereinander getChar aufrufst, liefert dir der 2te Aufruf nur das "\n" von der ersten Eingabe. Eine Alternative wäre "getLine" zu verwenden, etwa so:
Code:
getA :: IO Int
getA = do
    putStrLn "Please enter number A"
    fmap read getLine
Das unterscheidet sich aber von deinem Programm dadurch, dass nun auch Zahlen mit mehreren Ziffern akzeptiert werden. Weiss nicht, ob das in deiner Aufgabenstellung erlaubt ist.
 
Zurück
Oben