eXi*_*nCe 1 reverse haskell list
我在进行以下练习时遇到问题:
我应该反转列表中的所有元素,除了第一个元素,列表的第一个元素必须保持在原始位置.
正确的例子:
input: rvrsTail [1,2,3,4,5]
output [1,5,4,3,2]
Run Code Online (Sandbox Code Playgroud)
到目前为止我做了什么:
rvrsTail :: [x] -> [x]
rvrsTail xs = reverse ( tail xs)
Run Code Online (Sandbox Code Playgroud)
这确实反转了列表的尾部,但删除了第一个元素,因为我无法将第一个元素存储在变量中,所以我似乎无法理解如何解决这个问题.
错误输出:
input: rvrsTail [1,2,3,4,5]
output [5,4,3,2]
Run Code Online (Sandbox Code Playgroud)
由于这应该是初学者的练习,解决方案应该很简单.
当您收到非空列表时,必须将头部留在原位并将尾部反转.换句话说,您可以将列表解构为头部和尾部,然后使用该头部和反向尾部重建列表:
rvrsTail :: [x] -> [x]
rvrsTail [] = []
rvrsTail (listHead : listTail) = listHead : reverse listTail
Run Code Online (Sandbox Code Playgroud)