Sml 检查参数是否为列表

Sml 检查参数是否为列表,sml,smlnj,Sml,Smlnj,在SML中,如果参数x是一个列表,是否可以编写一个返回true的通用函数 fun isList(x) = ....... 预期用途: - isList(4); (* returns false *) - isList([1, 2, 3]); (* returns true *) 在SML中,如果参数x是一个列表,是否可以编写一个返回true的通用函数 fun isList(x) = ....... 没有 您可以尝试进行模式匹配,然后处理适当的异常。但无论哪种方式,这都违背了函数式编程的

在SML中,如果参数x是一个列表,是否可以编写一个返回true的通用函数

fun isList(x) = .......
预期用途:

- isList(4);   (* returns false *)
- isList([1, 2, 3]); (* returns true *)
在SML中,如果参数x是一个列表,是否可以编写一个返回true的通用函数

fun isList(x) = .......
没有


您可以尝试进行模式匹配,然后处理适当的异常。但无论哪种方式,这都违背了函数式编程的意义。在函数式编程中,目标是用抽象出来的类型构建有用的函数。任何特定于类型的函数调用都应该抽象为输入

map:('a->'b)->'a list->'b list
为例。整个目标是将您希望执行的操作抽象为传入的函数(以咖喱形式)


因此,输入类型的大小写没有抓住要点。因此,如果希望根据输入类型执行不同的操作,则应将该操作作为函数输入传入

这样一个函数的类型是什么?函数的返回类型应该是布尔型的。也许这个问题会有帮助:但是输入类型也是函数类型的一部分——而且您似乎要求的函数缺少任何定义良好的输入类型。另一方面,如果“表达式”不是指“字符串”但是,在SML中不存在这样的表达式概念,而可以同时使用4和[4]作为实例。