gpt4 book ai didi

haskell - 从列表中提取元素并返回该元素以及元组中列表的其余部分的有效方法是什么?

转载 作者:行者123 更新时间:2023-12-02 13:44:08 25 4
gpt4 key购买 nike

这似乎是一个很常见的操作,但由于某种原因我在 hoogle 中找不到它。不管怎样,这都是一个有趣的思维练习。我天真的实现:

pluckL :: [a] -> Int -> Maybe ( a, [a] )
pluckL xs idx = if idx < length xs then Just $ pluck' xs idx else Nothing
where
pluck' l n = let subl = drop n l in ( head subl, rest l n ++ tail subl )
rest l n = reverse $ drop ( length l - n ) $ reverse l

我的主要提示是我翻转列表的次数太多,所以我正在寻找一种创造性的方法,您可以遍历列表一次并生成元组。

最佳答案

永远不会有有效的方法。但至少可以有一个漂亮的方法:

pluckL xs i = case splitAt i xs of
(b, v:e) -> Just (v, b ++ e)
_ -> Nothing

关于haskell - 从列表中提取元素并返回该元素以及元组中列表的其余部分的有效方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15324010/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com