相关疑难解决方法(0)

SML警告:使用空列表或NONE选项时,键入Vars Not Generalized

我不能为我的生活弄清楚为什么以下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中使用多态的事实有关,但我已经完全陷入了如何摆脱这些警告.

如果您有任何想法请帮助 - 提前谢谢!

sml smlnj

11
推荐指数
1
解决办法
4074
查看次数

标签 统计

sml ×1

smlnj ×1