gpt4 book ai didi

sml - 在标准 ML 中压缩和解压缩列表

转载 作者:行者123 更新时间:2023-12-04 23:42:25 26 4
gpt4 key购买 nike

如何创建一个函数来将两个列表压缩和解压缩为标准 ML 中的元组列表?

示例:

unzip [[1,4],[2,5],[3,6]] -> [1,2,3] [4,5,6]

zip [1,2,3] [0,2,4] -> [[1,0],[2,2],[3,4]]

最佳答案

我发现我做错了什么。这是代码:

fun zip nil nil = nil
| zip nil l = l
| zip l nil = l
| zip (h::t) (k::l) = [h,k]::(zip t l)
fun mapcan(f,nil) = nil | mapcan(f,h::t) = (f h)@(mapcan(f,t))
fun unzip (l) = if (l = nil) then nil else [(map head l),(mapcan tail l)]

解压缩稍微困难一些。我们需要在压缩列表中选择双元素列表的第一个和第二个元素的映射函数。由于示例在某种程度上未指定问题,因此我们会将较长列表的其余部分放入第一个列表中。为了避免较短列表的空尾出现问题,我们使用附加尾列表的 mapcan 函数。

关于sml - 在标准 ML 中压缩和解压缩列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30605583/

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