このエラーに関する日本語のページしか見つけられなかったので、ログに記録してここで質問しようと思いました。
次の FSharp アクティブ パターンがある場合 (簡略化された例):
let (|InRange|OutOfRange|) from too =
function
| input when input >= from && input <= too -> InRange
| _ -> OutOfRange
それは完全にコンパイルされ、そのタイプを次のように示します。
val ( |InRange|OutOfRange| ) :
from:'a -> too:'a -> _arg1:'a -> Choice<unit,unit> when 'a : comparison
しかし、次のように使用しようとすると、エラーがスローされます。
let test i = match i with
| InRange 10 20 -> "in range"
| _ -> "out of range"
スロー: エラー FS0722: 1 つの結果を返すアクティブなパターンのみが引数を受け入れることができます
それぞれがNone/Some(x)を返す2つの単一ケースのパラメーター化されたアクティブパターンに変えることで解決できますが、なぜそうすることが許可されていないのか、および/または私が使用できる構文があるのか どうか疑問に思っています認識していません。また、なぜコンパイルされるのか疑問に思っていますが、使用できませんか?