我正在尝试在ML(SML / NJ)中编写一个函数来检查值是否为列表。
fun is_list [] = true | is_list (h::t) = true | is_list _ = false;
我希望is_list函数是'a - > bool功能。相反,我得到一个匹配冗余错误。这是为什么?如何编写函数?
谢谢!
答案 0 :(得分:2)
ML是一种打字语言。你不能写这样的功能。如果您觉得有必要,那么您正在从错误的方向接近问题。 ML在运行时区分不同情况的唯一方法是使用数据类型(如果需要在程序的某些部分允许异构类型,则可以定义自己的数据类型。)
另请参阅my reply类似的问题,了解为什么此限制是一项功能。