gpt4 book ai didi

sml - 警告 : calling polyEqual

转载 作者:行者123 更新时间:2023-12-03 09:20:38 24 4
gpt4 key购买 nike

有人可以解释一下,这个警告是什么意思?

stdIn:18.35 Warning: calling polyEqual
以及为什么在以下语句中我有“a 而不是 'a:
val alreadyVisited = fn : ''a * ''a list -> bool
这是我的功能:
fun alreadyVisited(v, []) = false
| alreadyVisited(v, x::xs) = if(x=v) then true
else alreadyVisited(v, xs);

最佳答案

'a表示“任何类型”,而 ''a表示“可以比较相等性的任何类型”。由于您的 alreadyVisited功能比较 xv使用 = , xv需要有一个支持比较它们相等的类型,所以你得到类型 ''a .

该警告意味着您正在比较具有多态类型的两个值是否相等。

为什么这会产生警告?因为它比比较已知类型的两个值的相等性效率低。

你如何摆脱警告?通过将您的函数更改为仅适用于特定类型而不是任何类型。

你应该关心警告吗?可能不是。在大多数情况下,我认为拥有一个适用于任何类型的函数比拥有尽可能高效的代码更重要,所以我会忽略警告。

关于sml - 警告 : calling polyEqual,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4322661/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com