这是一个代码示例,我认为它可以在作为列表实现的集合数据类型中正常工作:
fun newSet() = nilset;
fun isMember (k, x::xs) = if k = x then true else isMember (k, xs)
| isMember (k, nilset) = false;
问题是我不能将它作为一个列表来实现。下面是我的集合的实现代码。
abstype ''a set = nilset | st of ''a * ''a set
::
如果是针对列表,我如何递归地执行此操作和其他设置操作?如果不是,为什么会抛出异常?我在使用时得到这个::
:
! Type clash: pattern of type
! ''a set
! cannot have type
! ''b list
谢谢你的帮助。