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