我正在尝试根据比率进行模式匹配:
isValid :: Ratio Int -> Bool
isValid (num % den) = ...
但是,这会产生:
Parse error in pattern: num % den
有趣的是,Data.Ratio
包以这种方式定义了分子
和分母
函数,但使用了:%
运算符:
numerator (x :% _) = x
denominator (_ :% y) = y
但是,我无权访问后一个运算符。
谁能解释一下为什么我的模式匹配不起作用以及如何修复它?
最佳答案
虽然在这种情况下您可以从 GHC.Ratio
导入运算符,但从 GHC 7.8 开始有一个通用解决方案:pattern synonyms .
pattern num :% denom <- ((\x -> (numerator x, denominator x)) -> (num, denom))
关于haskell - 为什么我不能根据 Haskell 中的比率进行模式匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33325370/