以下函数非常简单:
test :: Int -> Int
test x = case x of
0 -> 0
1 -> 1
_ -> 2
Run Code Online (Sandbox Code Playgroud)
事实上,test 0 == 0和test 1 == 1,和test 77 == 2.
以下功能几乎一样简单:
import Data.Ratio
test2 :: Rational -> Int
test2 = case x of
0 -> 0
1 % 2 -> 1
_ -> 2
Run Code Online (Sandbox Code Playgroud)
在GHCi中加载此代码会出错Parse error in pattern: 1 % 2.
是什么赋予了?为什么我不能在有理数上进行模式匹配?我可以解决这个例子来自卫兵的现实问题,但我很好奇为什么模式匹配不起作用.