まず、この問題に対処するより良い方法がありますので問題はありません。F#:奇数型推論の振る舞い
しかし、それは私が理解できないものです。誰かがこれを説明できますか?
として、私はスワップ機能を定義します。私はこれだけで罰金のようなスワップ機能を使用することができる午前
namespace Utilities
module Misc
let Swap (left : 'a byref) (right : 'a byref) =
let temp = left
left <- right
right <- temp
。
Misc.Swap (&s.[i]) (&s.[j])
しかし、私はのようなモジュールを定義する場合:
namespace Utilities
type Misc =
static member Swap (left : 'a byref) (right : 'a byref) =
let temp = left
left <- right
right <- temp
私は両方の引数に次のエラーを取得:
移動することで、呼び出し側の引数の変更のための型推論をどうやっThis expression has type 'b byref but is here used with type 'a ref
型に関数?
感謝を。部分的なアプリケーションがbyrefをキャプチャしようとし、それがうまくないので、 'byref'カドミウムパラメータの使用を禁止するように言語仕様を変更する可能性があります。 :) – Brian