如何检查列表是否为空

时间:2013-04-07 16:44:59

标签: sml smlnj

刚开始学习sml,请原谅我可能造成的任何不适。

好的,这是我的功能:

fun swapPairsInList [(x,y)]
swapPairsInList: (’x * ’y) list --> (’y * ’x) list

我知道如何交换列表中的对(递归)但我遇到的问题是基于列表为空的基本情况(null)。我究竟如何检查此列表是否为空?我试过了

null [(x,y)]

但这只是抛弃了异常。我应该使用模式匹配来解决这个问题吗?

2 个答案:

答案 0 :(得分:2)

供将来参考:

fun swapPairsInList []            = []
  | swapPairsInList ((x,y)::tail) = (y,x) :: swapPairsInList tail

模式[]与空列表匹配。

当然,使用map和foldl等高阶函数要好得多。

答案 1 :(得分:1)

好的,所以我想出来了,一看到位于ListPair structure

的地图功能,我就从错误的角度攻击了问题

新代码:

fun swap (x,y) = (y,x);
fun pairSwap l = map swap l;