我不能为我的生活弄清楚为什么以下SML功能在我的作业问题中抛出警告:
fun my_func f ls =
case ls of
[] => raise MyException
| head :: rest => case f head of
SOME v => v
| NONE => my_func f rest
fun f a = if isSome a then a else NONE;
Run Code Online (Sandbox Code Playgroud)
每当我使用以下测试函数调用my_func时:
my_func f [NONE, NONE];
my_func f [];
Run Code Online (Sandbox Code Playgroud)
我总是收到警告:
警告:由于值限制而未通用的类型变量被实例化为虚拟类型(X1,X2,...)
每当我传入包含至少一个SOME值的选项列表时,都不会抛出此警告.我知道它必须与我在函数currying中使用多态的事实有关,但我已经完全陷入了如何摆脱这些警告.
如果您有任何想法请帮助 - 提前谢谢!