我正在尝试编写一个函数来确定给定数字n
是否是完美的正方形。这是我的尝试:
local
fun perfect_square_iter x z = let val sqr = z * z in
case (x,z) of
(sqr,_) => true
| (_, 0) => false
| _ => perfect_square_iter x (z - 1)
end
in fun perfect_square n = perfect_square_iter n n
end
现在,当我尝试使用 运行它时sml myfile.sml
,出现以下错误:
lab03.sml:17.5-20.43 Error: match redundant
(sqr,_) => ...
--> (_,0) => ...
--> _ => ...
/usr/lib/smlnj/bin/sml: Fatal error -- Uncaught exception Error with 0
raised at ../compiler/FLINT/trans/translate.sml:1735.13-1735.21
这对我来说似乎不是一个多余的模式,因为它只匹配两个常量,然后是其他任何东西。为什么编译器认为这是多余的?