gpt4 book ai didi

list - Haskell,将列表的元素及其长度压缩

转载 作者:行者123 更新时间:2023-12-03 18:32:53 26 4
gpt4 key购买 nike

下一行应该显示它是如何工作的..

[14,2,344,41,5,666][(14,2),(2,1),(344,3),(5,1),(666 ,3)]

["Zoo","School","Net"] [("Zoo",3),("School",6),("Net",3 )]

这就是我目前的代码

zipWithLength :: [a] -> [(a, Int)]
zipWithLength (x:xs) = zipWith (\acc x -> (x, length x):acc) [] xs

我想弄清楚第二行的问题是什么。

最佳答案

如果将数字转换为字符串(使用 show),则可以对它们应用 length:

Prelude> let zipWithLength = map (\x -> (x, length (show x)))
Prelude> zipWithLength [14,2,344,41,5,666]
[(14,2),(2,1),(344,3),(41,2),(5,1),(666,3)]

但是,您不能对字符串列表使用相同的函数:

Prelude> zipWithLength ["Zoo","School","Net"]
[("Zoo",5),("School",8),("Net",5)]

数字不是字符串的长度,而是它们的表示:

Prelude> show "Zoo"
"\"Zoo\""
Prelude> length (show "Zoo")
5

如评论中所述,其他类型的元素可能会出现类似问题:

Prelude> zipWithLength [(1.0,3),(2.5,3)]
[((1.0,3),7),((2.5,3),7)]
Prelude> show (1.0,3)
"(1.0,3)"
Prelude> length (show (1.0,3))
7

关于list - Haskell,将列表的元素及其长度压缩,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49450314/

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