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'
나는이 기능에 타입 추론을 할 컴파일러를 기다리고 있었다 추측을하고
나는 기능과 같이 정의했습니다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
컴파일러는'x'를'int'로 추론합니다. 왜냐하면'1 - x'와 같이 사용하기 때문입니다. '1'은 항상 정수가 될 것이고 다른 정수와 함께 산술 표현식에서만 사용할 수 있습니다. '1'의 모든 사용법을'1.0'으로 변경하면 코드가 컴파일되어'float'이되고'x'가'float'으로 추론됩니다. – TeaDrivenDev
(예를 들어, C#과 다른 점은 필요에 따라 유형을 강제 변환하므로 동일한 표현식에서 정수와 부동 소수점 숫자를 혼합 할 수 있음) – TeaDrivenDev
@TeaDrivenDev Awesome! 그것은 분명히 문제 였고, 미래에 지켜보고 싶은 새로운 것이 었습니다. 당신이 대답을하고 싶으면 받아 들일 수 있어요. – darkpbj