【问题标题】:Adding two lists together with map将两个列表与地图一起添加
【发布时间】:2017-03-21 10:42:40
【问题描述】:

所以我正在尝试编写一些最小的代码来将两个字符串列表放在一起,为此我认为最好使用haskell map 函数。

基本上我希望能够做加法器 ["1","2"] ["3","4"] = ["1","2","3","4"]

所以我有一个名为 adder 的函数,它接受一个列表,然后将一个字符串添加到该列表并返回新列表。然后我有一个名为 adders 的函数,它复制了 adder 函数,但是添加了一个字符串列表而不是一个字符串,但是目前它产生了多个列表而不是一个列表。

我以为

adder :: [String] -> String -> [String]
adder y x = y ++ [x]

adders y x = map (adder y) x 

会起作用,但这只是给出了两个列表的列表 [["1","2","3"],[["1","2","4"]]

最好的方法是什么?

【问题讨论】:

  • 能否正确格式化您的帖子? adders 应该怎么做?你希望adder 做什么?为什么不使用adders y x = y ++ x
  • ["1","2"] ["3","4"] = ["1","2","3","4"] 的类型为 [String] -> [String] -> [String]
  • @Zeta 最后一点是我想要达到的,抱歉我没有意识到我能做到。
  • ...为什么,如果您仍然使用标准运算符++,您甚至定义adders 吗?无论您在哪里使用adders,您都可以直接调用++。或者,您可以定义adders = (++)。 ——你可能想问如何定义这个没有库操作符,仅根据普通列表构造函数(:)?

标签: list haskell dictionary


【解决方案1】:

我认为最好使用haskell map函数

没有。 map ff 应用于列表的每个元素。但是你根本不想改变元素,你想改变列表本身。但是,这超出了map 所能提供的范围。 map 不能添加更多元素,也不能删除一些。

如果你想连接两个列表,只需使用++

adders :: [a] -> [a] -> [a]
adders x y = x ++ y

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-16
    • 2021-09-19
    相关资源
    最近更新 更多