gpt4 book ai didi

list - Haskell列表理解编译错误

转载 作者:行者123 更新时间:2023-12-02 18:09:50 25 4
gpt4 key购买 nike

我想创建一个函数,给定两个列表( float ,但可以是任何东西),给出一个列表,其中包含从第一个列表中取出两个元素并将其放在最后一个列表中的所有组合以及前一个列表的所有组合将最后一个元素中的一个(现在有更多元素)放在第一个元素上。

对于每个 Action ,它还给出移动的最大值(在第二个 Action 中只有一个 Action ,即该值)。当第一个列表为空时,一切都应该结束(不会有第二次移动)。

我不能指望任何人都能理解这一点,所以,例子:

next [1,2,3,4] [] -> [(([1,2], [3,4], 4), ([1,2,3],[4],3)), (([1,2], [3,4], 4), ([1,2,4],[3],4)), (([1,3], [2,4], 4), ([1,2,3],[4],2)), (([1,3], [2,4], 4), ([1,3,4],[2],4)).....
next [1,2] [3,4] -> [(([], [1,2,3,4],2),)], ())

到目前为止我所拥有的:

module Test where 

next :: [Float] -> [Float] -> [(([Float],[Float], Float),([Float],[Float], Float))]
next [] _ = []
next (a:b:[]) s
|a>b = [([],a:b:s, a)]
|otherwise = [([],a:b:s, b)]
next d s = [([x,z], i:j:s, j), b | i <- d, j <- d, i < j, x <- d, z <- d, x < z, z /= i, z /= j, x /= z, x /= i, x /= j, b <- (back [x,z] i:j:s)]
where
back d s = [(i:d, [x,z], i) | i <- s, x <- s, z <- s, x < z, z /= i, x /= z]

编译该代码会在第一个理解列表的 | 字符处返回错误。我有点理解 back 函数中的错误。为什么不能编译?

最佳答案

理解语法是

[ <expression> | ... ]

对于<expression>你有([x,z], i:j:s, j), b这在语法上是错误的。您是说 ([x,z], i:j:s, b)

关于list - Haskell列表理解编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30773395/

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