6
これはF#の最初の行です。私は書いたことがあるので、謝っています。おそらく、検索するGoogleの正しいキーワードがわからないからです。F#関数のパラメータのデータ型
私はそうのような関数を定義しようとした:
let sigmoid x deriv = if deriv then x * (1 - x) else 1/(1 + System.Math.Exp(-x))
これは私にSystem.Math.Exp(-x)
上のエラーを与える:
The type 'float' does not match the type 'int'
私は、この関数に型推論を行うには、コンパイラを期待していたと思いますし、 floatとしてx
を定義します。私はここで何が欠けていますか?あなたは1 - x
のようなもので、それを使用しているため、
let sigmoid x deriv = if deriv then x * (1 - x) else 1/(1 + System.Math.Exp(-x))
[<EntryPoint>]
let main argv =
sigmoid 1.0 false |> printfn "%A"
0
コンパイラは、 '1 - x'のように使ったので、' x'を 'int'として推論します。 '1'は常に整数になり、他の整数と一緒に算術式でのみ使用できます。あなたのコードを '1'から' 1.0 'に変更すると、コードはコンパイルされ、 'float'となり、' x'は 'float'として推論されます。 – TeaDrivenDev
(これは、たとえば、必要に応じて型を強制変換し、同じ式で整数と浮動小数点数を混合できるようにするC#とは異なります) – TeaDrivenDev
@TeaDrivenDev Awesome!それは間違いなく問題であり、将来的には見守るべき新しいものでした。私が受け入れることができる答えをしたいなら – darkpbj