我是Haskell的新手,所以请耐心等待。
是否可以删除元组中列表的第一个元素?
所以,如果我们有类似的东西:
function:: [([x], y)] -> [([x], y)]
我们可以编辑列表,以便删除列表的第一个元素吗?这样的元组就像:
[([1,2,3], 4), ([5,6,7], 8), ([9,10,11,12], 13), ([14,15], 16)]
成为
[([2,3], 4), ([6,7], 8), ([10,11,12], 13), ([15], 16)]
或者这是不可能的,我是否在浪费时间试图解决这个问题?
答案 0 :(得分:1)
首先编写更简单的函数([x],y) -> ([x],y)
。像这样的东西会起作用:
f ((x:xs), y) = (xs, y)
当列表为空时,您需要决定该怎么做。一种选择是再次返回空列表:
f ([], y) = ([], y)
另一种选择是在tail
函数产生错误,在这种情况下你可以将它用于整个实现。
f (xs, y) = (tail xs, y)
接下来,您可以使用名为map
的高阶函数来获得最终函数。它的类型是(a -> b) -> [a] -> [a]
。如果您将f
作为第一个参数传递,则a
和b
都是([x],y)
。