2017-02-12 5 views
1

(エラーを混乱)式はint型で期待されていた私のコードエラー:入力-1.0OCamlは

let safe_log10 = function x -> if (x <= 0.) then None else Some (log10 x);; 

を、これは与える:

safe_log10 -1.0;; 
Error: This expression has type float -> float option 
     but an expression was expected of type int 

をしかし、それは(-1.0)で正常に動作します:

# safe_log10 (-1.0);; 
- : float option = None 

なぜこのようなことが起こりますか、どのようにしての機能を修正できますか?ありがとう。それは-1.0が一緒に書かれていることは重要ではありません

答えて

1

、この-はまだバイナリ演算子であり、そして、あなたの表現は意味がありませんfunction - float、のように見えます。 OCamlでは、他の多くの言語とは異なり、バイナリ-intintにのみ適用できます。浮動小数点数の場合でも、異なる演算子-.が必要です。