私は比率に対してパターンマッチをしようとしています:
isValid :: Ratio Int -> Bool
isValid (num % den) = ...
ただし、これにより次の結果が得られます。
Parse error in pattern: num % den
興味深いことに、Data.Ratio
パッケージはnumerator
anddenominator
関数をこのように定義しますが、:%
演算子を使用します。
numerator (x :% _) = x
denominator (_ :% y) = y
ただし、この後者のオペレーターにはアクセスできません。
パターンマッチが機能しない理由と、それを修正する方法を誰か説明できますか?