gpt4 book ai didi

Haskell 列表错误的部分和

转载 作者:行者123 更新时间:2023-12-02 10:48:10 28 4
gpt4 key购买 nike

我需要在 Haskell 中编写一个函数,对列表中的元素求和,直到某些特定元素存储在另一个列表中。

例如 partial_add [1,2,3,4,5,6] [2,5] 0 应返回 [3,12,6]

我已经走到这一步了:

partial_add [] _ count = []
partial_add (a:x) list count | elem a list = count:partial_add x list 0
| otherwise = partial_add x list count+a

(很可能无法正常工作)

但是当我尝试运行该函数(它正确编译)时,我收到此错误:

No instance for (Num [t0]) arising from a use of `it' 
In a stmt of an interactive GHCi command: print it

知道发生了什么吗?

最佳答案

根据您的示例,我会编写如下所示的函数:

partialAdd :: [Int] -> [Int] -> [Int]
partialAdd ls seps = foldr f [] ls
where
f a [] = [a]
f a (x:xs)
| a `elem` seps = a:x:xs
| otherwise = (x+a):xs

*Main> partialAdd [1,2,3,4,5,6] [2,5]
[3,12,6]

顺便说一句。我认为您问题中的解决方案似乎并不像您在示例中指定的那样有效(或者我误解了某些内容):

partial_add :: [Int] -> [Int] -> Int -> [Int]
partial_add [] _ count = []
partial_add (a:x) list count | elem a list = count:partial_add x list 0
| otherwise = partial_add x list (count+a)

*Main> partial_add [1,2,3,4,5,6] [2,5] 0
[1,7]

但它很容易修复以适合您的示例:

partial_add :: [Int] -> [Int] -> Int -> [Int]
partial_add [] _ count = [count]
partial_add (a:x) list count | elem a list = (count+a):partial_add x list 0
| otherwise = partial_add x list (count+a)

*Main> partial_add [1,2,3,4,5,6] [2,5] 0
[3,12,6]

关于Haskell 列表错误的部分和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27755623/

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