我试过了looking up Int -> [a] -> Maybe a
on hoogle,但没有运气。
我觉得这应该在某个标准库中,但我不知道在哪里。
答案 0 :(得分:9)
Hackage上有一个名为Safe的库,它包含一个函数:
atMay :: [a] -> Int -> Maybe a
答案 1 :(得分:4)
标准库中没有一个(虽然会很好),但这是实现它的一种方法(也适用于无限列表):
(!!!) :: [a] -> Int -> Maybe a
[] !!! _ = Nothing
(x:xs) !!! n
| n < 0 = Nothing
| n == 0 = Just x
| otherwise = xs !!! (n-1)
答案 2 :(得分:3)
这种功能的可能定义(主要是从(!!)
的定义中窃取):
xs !!! n | n < 0 = Nothing
[] !!! _ = Nothing
(x:_) !!! 0 = Just x
(_:xs) !!! n = xs !!! (n-1)
答案 3 :(得分:3)
怎么样
(!!!) :: [a] -> Int -> Maybe a
xs !!! n = Maybe.listToMaybe $ drop n xs