小编drP*_*per的帖子

列表中相邻元素乘积的 Haskell 函数

我正在尝试创建一个 Haskell 函数,其中输入是整数列表,输出是所述列表中相邻元素的乘积的新列表。这是我当前的代码:

productsList :: [Integer] -> [Integer]
productsList [] = []
productsList (x:[]) = []
productsList (x:y:xs) = [x * y] ++ productsList xs
Run Code Online (Sandbox Code Playgroud)

但是,当我在 GHC 中检查它时,虽然它编译正常,但输出是错误的。例如,当我尝试:时 productsList [1..3],输出是:[2],这显然只是列表中前两个元素的乘积(这里的正确答案应该是[2, 6])对我来说,似乎可能的问题在于我的情况当有 x 但没有 y 时不覆盖,虽然我认为它被覆盖在行中productsList (x:[]) = []

谁能帮我弄清楚是什么导致了这种输出变化?

recursion haskell function list

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

标签 统计

function ×1

haskell ×1

list ×1

recursion ×1