3

fsyaccベースのプロジェクトでは、次の行があります。

type 'a cucomment = string

これは私が得ている完全なエラーの説明です:

CALast.fs(117,9):エラーFS0035:この構造は非推奨です:この型の省略形には、省略されている型に表示されない1つ以上の宣言された型パラメーターがあります。タイプの省略形は、省略されるタイプで宣言されたすべてのタイプパラメーターを使用する必要があります。1つ以上の型パラメーターを削除するか、「type C <'a> = Cof...」などの基になる型をラップする具象型定義を使用することを検討してください。

これを解決する方法はありますか?

4

1 に答える 1

3

F#では、新しい型を宣言せずにジェネリック型パラメーターを型に追加する型エイリアスは使用できなくなりました。他の型をラップするジェネリック型を定義する場合は、コンストラクターを使用する必要があります。たとえば、単一ケースの識別された共用体を使用できます。

type 'a Cucomment = CC of string

Value残念ながら、これは、パターンマッチングを使用するか、タイプにメンバーを追加することによって、タイプを使用するすべてのコードを変更して値をアンラップする必要があることを意味します。

ジェネリック型エイリアスが許可される唯一のケースは、測定単位を使用して型のバージョンを宣言する場合です。これには、特別な属性が必要です。ただし、これはおそらく機能しません(ユニットの動作がまったく異なるため)。

[<MeasureAnnotatedAbbreviation>]
type 'a Cucomment = string 

これがfsyaccによって生成されたコードにある場合、それはfsyaccのバグであり、修正する必要があります(これはごく最近の変更だと思います)。その場合は、ドットで報告しfsbugsmicrosoftくださいcom

于 2012-03-23T12:02:18.380 に答える