gpt4 book ai didi

list - Haskell函数交换列表中的第二个元素

转载 作者:行者123 更新时间:2023-12-01 14:07:46 24 4
gpt4 key购买 nike

我想知道如何在 Haskell 中交换列表的每个第二个元素。

示例输出应如下所示:

swap [1,2,3,4,5]  
[2,1,4,3,5]

我目前的情况是

swap :: [a] -> [a]  
swap [] = []
swap (x:xs) = head xs : [x]

但这只会交换前两个元素,并且当我尝试加载包含该函数的文件时,我为使函数递归所做的任何尝试都会导致错误。如何使其递归?

最佳答案

一次需要抓取2个元素:

swap [] = []
swap (x:y:rest) = y:x:(swap rest)
swap [x] = [x]

需要最后一行来允许奇数长度列表——它匹配长度恰好为 1 的列表,因此它不会与其他 2 种情况(长度为 0 和长度为 2 或更多)中的任何一种重叠。

关于list - Haskell函数交换列表中的第二个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8114052/

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