let
これは、クラス内のバインディングに対する構文上の制限のようです。ただし、ジェネリックローカル関数を定義することはできます。型アノテーションで型パラメーターを指定するだけです。
type MyType () =
let func (x : 'T) : 'T = x
仕様ではクラス定義が次の構造を持っていると規定されているため、これが仕様によって明示的に構文的に禁止されているとは思いません。
type type-name patopt as-defnopt =
class-inherits-decl opt
class-function-or-value-defns opttype -
defn-elements
class-or-value-defnは次のように定義されます。
class-function-or-value-defn:=属性opt static
opt let
rec
optfunction -or-value-defns
ここで、function-or-value-defnsは、明示的な型パラメーターを持つ関数定義です。
function-defn:=
inline
opt access
opt ident-or-op typar-defns opt arguments-pats return-typeopt = expr