如何检查值是否为ML中的列表?

时间:2015-04-14 22:45:41

标签: polymorphism sml ml

我正在尝试在ML(SML / NJ)中编写一个函数来检查值是否为列表。

fun is_list [] = true | is_list (h::t) = true | is_list _ = false;

我希望is_list函数是'a - > bool功能。相反,我得到一个匹配冗余错误。这是为什么?如何编写函数?

谢谢!

1 个答案:

答案 0 :(得分:2)

ML是一种打字语言。你不能写这样的功能。如果您觉得有必要,那么您正在从错误的方向接近问题。 ML在运行时区分不同情况的唯一方法是使用数据类型(如果需要在程序的某些部分允许异构类型,则可以定义自己的数据类型。)

另请参阅my reply类似的问题,了解为什么此限制是一项功能。