2017-06-11 2 views
0

Ich bin etwa fertig mit einem Skript, das ich schreibe, aber ich habe eine letzte Bedingung Anweisung, um meine Funktion hinzuzufügen.Standard ML multiple condition statement

fun whileloop (x:real,a:int,b:real) = 
    if (a<1) 
    then (x,a,b) 
    else whileloop(x+1.0,a-1,b-1.0) 

Dies ist meine aktuelle Schleife, die ich erstellt habe. Es ist im Grunde alles, was ich brauche, mit einer Ausnahme. Ich möchte, dass es seine Schleife verlässt, sobald die b-Variable null erreicht [wenn dies passiert, bevor a null erreicht). Ich glaube, Standard ML lässt mich keine Bedingungserklärung für eine echte Variable ... wie b < 1.0. nur um Ihnen eine Vorstellung davon zu geben, was ich zu tun versuche ... Ich möchte den folgenden Code unten arbeiten:

fun whileloop (x:real,a:int,b:real) = 
    if (a<1 or b<1.0) 
    then (x,a,b) 
    else whileloop(x+1.0,a-1,b-1.0) 

natürlich dieser Code nicht auf Grund der Syntax funktioniert und eine Bedingungsanweisung wird geprüft gegen eine echte Zahl ... aber wie könnte ich diese Aufgabe erfüllen, während ich mein Skelett einigermaßen intakt halte? Ich möchte einfach eine andere if-Bedingungserklärung zum vorhandenen Skelett hinzufügen. In C++ war das eine ziemlich einfache Aufgabe.

+2

Falsches Schlüsselwort. 'or' =>' orelse'. Mit dieser Änderung funktioniert Ihre zweite Funktion wie erwartet. –

+0

Danke, habe nicht bemerkt, dass ich so nah war! – Busta

Antwort

1

Hier ist die Antwort. Danke an John Coleman.

fun whileloop (x:real,a:int,b:real) = 
    if (a<1 orelse b<1.0) 
    then (x,a,b) 
    else whileloop(x+1.0,a-1,b-1.0)