需求:实现Haskell函数将Int列表与嵌套字符串列表配对
实现处理字符串列表的Haskell addNumbers函数
你需要的函数可以通过map函数复用你已有的zip逻辑来实现,核心思路是对输入的每个字符串列表,都执行你原本的配对操作:
addNumbers :: [Int] -> [[String]] -> [[(Int, String)]] addNumbers numbers stringLists = map (zip numbers) stringLists
代码解释
map (zip numbers) stringLists会遍历stringLists中的每一个[String]元素,对每个元素执行zip numbers操作——也就是把同一个numbers列表和当前的字符串列表按位置配对,生成对应的[(Int, String)]列表。- 所有配对结果最终会被组合成
[[(Int, String)]]类型,完全符合你的类型签名要求。
验证示例
调用addNumbers [1, 2] [["One", "Two"], ["Three", "Four"]]时:
- 第一个子列表
["One", "Two"]与[1,2]配对,得到[(1, "One"), (2, "Two")] - 第二个子列表
["Three", "Four"]与[1,2]配对,得到[(1, "Three"), (2, "Four")] - 最终输出就是
[[(1, "One"), (2, "Two")], [(1, "Three"), (2, "Four")]],和预期一致。
另一种实现方式(列表推导式)
你也可以用列表推导式达到同样的效果,写法更直观:
addNumbers numbers stringLists = [zip numbers sl | sl <- stringLists]
内容的提问来源于stack exchange,提问作者froglover123
相关产品推荐
相关产品推荐

