ML言語で言語ML機能valを」*」* int型 - > BOOL
と仮定f(x,y,z)
機能です。 fの引数の型がa’ * a’ * int
であるfの定義の例を挙げてください。
サンプルコード私はa’ * a’ * int -> bool
にこのヴァルをどのように変化するか
fun f1 (x,y,z) = z<5 ;
val f1 = fn : 'a * 'b * int -> bool
?
ML言語で言語ML機能valを」*」* int型 - > BOOL
と仮定f(x,y,z)
機能です。 fの引数の型がa’ * a’ * int
であるfの定義の例を挙げてください。
サンプルコード私はa’ * a’ * int -> bool
にこのヴァルをどのように変化するか
fun f1 (x,y,z) = z<5 ;
val f1 = fn : 'a * 'b * int -> bool
?
タイプ:
a’ * a’ * int -> bool
関数が最初「型、また第二」int型の種類と第三のものである3つの引数を取ることを意味します。
あなたの定義は:それはタプルがかかるため
fun f1 (x,y,z) = z<5 ;
は今、xの種類を制限するために、yはあなたが書くことができ等しくなるように、正しい方法である:
fun f1 (x :'a ,y :'a ,z) = z<5 ;
明示的な型の注釈を避けたい場合は、x
とy
を同じ型にする最も簡単な方法は、両方の関数を関数から返すことですが、状況は異なります。
実世界の例:
- fun f (x,y,z) = if z < 0 then x else y;
val f = fn : 'a * 'a * int -> 'a
(bool
結果の型が問題の説明で言及されていないので、私はそれはちょうどあなたがz < 5
と元の問題の一部ではない戻っての結果だと仮定しています。)
あなたの宿題に関する質問はすべてStackOverflowに投稿していますか? –