2017-01-16 16 views
0

私はSMLには新しいので、3つの整数(n、z、k)を取り、プログラムで指定された値と比較するプログラムを作成しました。正しい場合はtrueを返し、そうでない場合はfalseを返します。条件と値は同時に等しくなければなりません。これらの数値がすべてプログラムの値と等しい場合、プログラムは真を返すので、私のif文は3つの条件を同時にチェックする必要があります。 私の問題は、SMLが例えば&または^と!を認識しないため、これらの3つの条件をすべて1つのif節に書くことができないことです。 は、例えば、iが(N == 8 & & k個の== 5 & & Z == 9)場合かどうかをチェックします。ifステートメントSMLの複数の条件をチェックする

fun EvalR (n: int , k: int , z:int) = 
if (n=8 ???) then true 
else false; 

答えて

0

私はそれを見つけた:私はここに& の代わりに使用すべきことはコードです。私たちはSMLでもandalsoを使用することができます。

1

AshkanパルサがCS317 SML Style Guide呼ばので、私はあなたがそれから派生するかもしれないものを指摘するだろうと思いました。

  1. 関数名を小文字で始めるとします。 evalR

  2. if ... then true else falseを書き込まないでください。単に...と書いてください。

  3. 一部の意見は一致しません。型アノテーションは確かに役に立ちますが、型推論も役に立ちます。

  4. nazilaによると、Standard MLのand演算子はandalsoと呼ばれます。だから、

fun evalR (n, k, z) = 
    n = 42 andalso k = 43 andalso z = 0 

それは関数本体は関数本体から関数の引数を区切るために=で定義されている機能と同時に=秒が含まれていることをcomfusingに思えるかもしれません。ただ、

(タイプ、値、関数などのような)値の演算子と物事を宣言するの一環として、最初の =、後者 = Sを考えます
関連する問題