【发布时间】:2013-04-07 16:44:58
【问题描述】:
刚开始学习 sml,请原谅我可能造成的任何不适。
好的,这是我的功能:
fun swapPairsInList [(x,y)]
swapPairsInList: (’x * ’y) list --> (’y * ’x) list
我知道如何(递归地)交换列表中的对,但我遇到的问题是列表为空(null)时的基本情况。我如何检查这个列表是否为空?我试过了
null [(x,y)]
但这只是抛出一个异常。我应该使用模式匹配来解决这个问题吗?
【问题讨论】:
-
你能解释一下你是如何使用
null的吗?有什么例外?只要x和y在范围内,表达式null [(x,y)]就不会导致任何类型的错误。但是它也永远不会返回 true,因为列表[(x,y)]显然不是空的。 -
Hm.. 那我的函数参数是不是表述不正确?我想要做的是将元组列表传递给 swapPairsInList 并交换元组对。例如:调用
swapPairsInList [(1,2), (3,4), (5,6)];将返回[(2,1),(4,3),(6,5)] -
是的,如果你的代码看起来像
fun swapPairsInList [(x,y)] = something,那么你的代码是错误的,因为它只适用于只包含一个元素的列表。有关更多信息,我需要查看您的代码。 -
啊,好吧!我现在明白了,谢谢你的帮助