So filtern Sie einen Maybe-Wert

8

Ich versuche eine Funktion zu erstellen, die eine Eingabe String -> Maybe Int validiert. Ich überprüfe, ob die Eingabezeichenfolge eine Zahl ist, und überprüfe dann, ob diese Zahl in einem Bereich liegt. Bisher habe ich

%Vor%

Das fühlt sich an wie schlechter Code. Wie soll das geschrieben werden?

Wenn ich versuche, eine Funktion zu wiederholen, wenn sie Nothing zurückgibt, was ist der beste Weg dazu:

Um die Funktion main zu loopen, mache ich:

%Vor%     
matthias 26.07.2017, 13:54
quelle

3 Antworten

13

Sie können mfilter verwenden, um Werte außerhalb des zulässigen Bereichs innerhalb von Maybe zu filtern, anstatt explizit zu suchen:

%Vor%     
Lee 26.07.2017, 14:05
quelle
8

Wie wäre es damit?

%Vor%

Oder auch das:

%Vor%

(Vermeidet eine separate inRange Funktion.)

    
MathematicalOrchid 26.07.2017 14:43
quelle
0

Ich würde so etwas versuchen (nicht getestet):

%Vor%

Es ist ein bisschen kürzer und prägnanter.

    
Robert K 26.07.2017 14:00
quelle

Tags und Links