【问题标题】:How to check if a value is a list in ML?如何检查一个值是否是 ML 中的列表?
【发布时间】:2015-06-20 17:32:44
【问题描述】:

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

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

我希望 is_list 函数是一个 'a -> bool 函数。相反,我得到一个匹配冗余错误。这是为什么?以及函数应该怎么写?

谢谢!

【问题讨论】:

    标签: polymorphism sml ml


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2020-02-18
      • 1970-01-01
      • 2011-02-10
      • 2014-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-22
      • 1970-01-01
      相关资源
      最近更新 更多