0

構文エラーが発生しています。浮動小数点数を返す関数のフロアを取得したいと思います。

これで正しい答えが得られると思いました

let cyclesPerInterrupt bps bpw cpu factor = 
 floor (fudge (float(factor) cyclesPerWord cpu wordsPerSec bps bpw))

しかし、そうではありません。私は考えられるすべてのことを試みました、そしてそれは私のために一緒になっていないだけです。ばかげていることは知っていますが、考えられません。

参考までに、fudgeはfloatと整数を取り、cyclesPerWordは2つの整数を取り、wordsPerSecは2つの整数を取ります。フロアはジェネリックを取り、フロートを返します。

4

3 に答える 3

3

また、括弧を使用して、最初に試みた方法で関数呼び出しをネストできることにも注意してください。

...(cyclesPerWord cpu (wordsPerSec bps bpw))

(上記の括弧の内側のセットがないと、cyclePerWord に 4 つの引数を渡そうとしているようなもので、これは望んでいるものではありません。)

于 2008-11-18T03:08:35.730 に答える
3

別の方法として、 let の失明と括弧の麻痺を避けるために、いくつかのパイプライン |> を使用します。

let fudge (a : float) (b : int) =
    a

let cyclesPerWord (a : int) (b : int) =
    a

let wordsPerSec (a : int) (b : int) =
    a

let cyclesPerInterrupt bps bpw cpu factor =
    wordsPerSec bps bpw
    |> cyclesPerWord cpu
    |> fudge factor
    |> floor
于 2008-11-18T11:49:56.207 に答える
0

関数定義を見ると、関数を呼び出すために C# のような構文を使用しているように見えます。関数名は ( ) の直前に存在し、その関数に関連付けられたパラメーターは ( ) 内にあります。例は FunctionName(Parameter1 Parameter2) です。F# はそのスタイルを使用しません。代わりに、関数名と関連するパラメーターが ( ) 内に存在するスタイルを使用します。この例は、(FunctionName Parameter1 Parameter2) です。

コードを表現する正しい方法は次のようになります

  let cyclesPerInterrupt bps bpw cpu factor = 
    (floor (fudge (float factor) (cyclesPerWord cpu (wordsPerSec bps bpw) ) ) )

ただし、最も外側の ( ) は実際には必要ありません。

于 2008-12-11T14:16:21.533 に答える