小编Glo*_*ash的帖子

在列表中找到元素的前一个元素(Haskell)

我想返回列表中元素的前一个元素.我打算获取参数索引并使用它来弃用列表,使得参数是最后一个元素,然后反转它并获取反向列表的第二个元素.我得到的错误:类型elemIndexMaybe Int同时take功能要求Int.我想修复它或使用简单的递归编写代码是否有使用递归的较短代码?

precedingElement :: Eq a => a -> [a] -> Maybe a
precedingElement elt lst    | lst == [] = error "List is empty"
                            | elt `notElem` lst = Nothing
                            | otherwise = Just x where x = snd (reverse (take (elt `elemIndex` lst) lst))
Run Code Online (Sandbox Code Playgroud)

haskell list

2
推荐指数
2
解决办法
579
查看次数

将函数应用于列表中的下两个元素

我正在编写一个函数来为列表中的下两个元素应用一个函数.

例如:applyToTwo (+) [1,2,3,4]return [3,5,7].

applyToTwo (-) [7,1,1,1,1]回来[6,0,0,0].

我想概括类型,以便它可以应用于我想要的任何类型.我的尝试是:

applyToTwo :: (a -> a -> b) -> [a] -> [a]
applyToTwo f [] = []
applyToTwo f [x] = []
applyToTwo f (x:x1:rest) = f x x1 ++ applyToTwo f (x1:rest)
Run Code Online (Sandbox Code Playgroud)

顺便说一句,有没有办法概括要应用的元素数量,以便它可以适用于3,4,5?

haskell function list

1
推荐指数
1
解决办法
74
查看次数

标签 统计

haskell ×2

list ×2

function ×1