0
と関数合成I次の例を持っていると、彼らは種類が互いにSML:isSome
- isSome;
val it = fn : 'a option -> bool
- SOME;
val it = fn : 'a -> 'a option
- val my_converter = (fn x => if x = 5 then SOME x else NONE);
val my_converter = fn : int -> int option
両方SOMEと対戦か、オプションを返すmy_converterていても動作しませんが、私はやるとき
を次- fn x => isSome o SOME x;
stdIn:19.9-19.24 Error: operator and operand don't agree [tycon mismatch]
operator domain: ('Z option -> bool) * ('Y -> 'Z option)
operand: ('Z option -> bool) * 'X option
in expression:
isSome o SOME x
なぜタイプエラーが発生するのですか?
すべての入力に対して 'isSome o SOME'が' true'を返すので、これを使用する意欲はありません。 –
これは、isSomeと条件付きのSOME/NONEペアをどのように組み合わせるかというより一般的なパターンを示すために使用できる組み込み関数の最も簡単な例です – Har