我一直在研究一个Haskell函数,它假定要获取一个列表和一个值。它应该反转列表,然后将值附加到前面。
我尝试过单独的反向和插入功能并在另一个上调用一个,但我找不到让它工作的方法。以下是我到目前为止的情况:
反向功能:
reverse' :: [a] -> [a]
reverse' [] = []
reverse' (x:xs) = reverse' xs ++ [x]
插入功能:
insert :: Ord a => a -> [a] -> [a]
insert x [] = [x]
insert x (y:ys)
| x > y = y : insert x ys
| otherwise = x : y : ys
我应该在另一个上调用其中一个功能吗?如果是这样,我该怎么做呢?或者,如果我应该只做一个功能?我已经对这个做了很多修改,似乎无法使用任何一种方法。
感谢您提供任何帮助,因为我还是初学者并且正在学习这门语言!
答案 0 :(得分:1)
您的reverse'
函数按预期工作,因此我们可以使用它来反转传递给我们函数的列表(请注意,它的使用与reverse
的使用相同,但效率低于Prelude
insert
)。您编写的reverse'
函数在这里不太有用,因为我们希望将值插入到列表前面的前面,而不是在小于它的第一个值之后。
因此,我们将您的reverseAndInsert :: a -> [a] -> [a]
reverseAndInsert x xs = x : reverse' xs
函数应用于列表,并将输入值放在返回的前面。
vs