Ich benutze Wachen innerhalb einer Funktion, aber nicht unmittelbar nach der Signatur der Funktion. Die Wachen sind unter einer do Aussage innerhalb des Körpers der Funktion. Ich bekomme diese Fehlermeldung:Hilfe bei der Lösung von Problemen mit Guards - AKTUALISIERT mit CODE
parse error on input `|'
Ich dachte, vielleicht der Fehler aus der Vertiefung kommt, aber ich habe viel Einbuchtung versucht, aber ich bekomme immer noch die Fehler. Ich frage, ist es weil die Wachen nicht sofort nach der Funktionssignatur sind, warum bekomme ich die Fehler?
dank
UPDATE 1
Code: Der Benutzer wird angenommen, um eine Zahl zu erraten, und die Zahl wird mit der Zufallszahl verglichen werden, wenn sie die gleichen sind. Wenn es nicht korrekt ist, wird der Benutzer raten, bis die Variable "raten" in der Funktion gleich Null ist. in jeder Interaktion wird dieser Wert (rate) um eins verringert.
zum Beispiel: puzz 12 5
. der Benutzer kann fünf mal erraten, die Zufallszahl wird zwischen 1 und 12 gewählt. Das ist, wie die Funktion tun soll, aber es funktioniert nicht.
puzz :: Int -> Int -> IO()
puzz boundary guess = do
putStr "Guess"
-- putStr -- I have to print (1 .. guess) here in each iteration
putStr ":"
x <- randomRIO (1, boundary :: Int)
n <- getLine
let
nTo = read n::Int
in print x
| guess == 0 = putStr "You couldn't guess right,the correct answer is" ++ x
| nTo > x = putStr "lower"
| nTo < x = putStr "higer"
| nTo == x = putStr "Congrat, You guess right."
| otherwise raad boundary (guess - 1)
die ouput muss so sein:
Main> puzz 50 6
Guess a number betwee 1 en 50.
Guess 1: 49
lower
Guess 2: 25
lower
Guess 3: 12
higher
Guess 4: 18
higher
Guess 5: 21
higher
Guess 6: 23
lower
You couldn't guess correct, the answer was: 22.
Dank für Ihre Hilfe
Sie scheinen ein großes Missverständnis in Bezug auf was Wachen sind. Wenn Sie Ihren Code gepostet haben, könnten wir sehen, was Sie erreichen möchten, und dieses Missverständnis aufklären. –