刚开始学习sml,请原谅我可能造成的任何不适。
好的,这是我的功能:
fun swapPairsInList [(x,y)]
swapPairsInList: (’x * ’y) list --> (’y * ’x) list
我知道如何交换列表中的对(递归)但我遇到的问题是基于列表为空的基本情况(null)。我究竟如何检查此列表是否为空?我试过了
null [(x,y)]
但这只是抛弃了异常。我应该使用模式匹配来解决这个问题吗?
答案 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;