SML:使用高阶函数foldr来反转列表

时间:2014-03-04 15:30:59

标签: list reverse fold

我尝试使用foldr来反转列表,如下所示

fun rev(l)= foldr(a b => b ++ [a])[] l;

但是我收到了错误:stdIn:4.25错误:在DARROW找到语法错​​误

任何人都可以帮忙指出错误吗?代码是否正确?

谢谢。

1 个答案:

答案 0 :(得分:0)

  1. 抛出DARROW错误,因为lambda表达式应以fn开头。
  2. Foldr获取元组,因此lambda表达式应以fn (a,b)
  3. 开头
  4. ++是Haskell中的concat运算符。在SML中,它是@
  5. 总而言之:

    fun rev(l) = foldr (fn (a,b) => b @ [a]) [] l;
    

    这确实颠倒了一个清单!