【问题标题】:compare string contents in haskell比较haskell中的字符串内容
【发布时间】:2009-05-12 10:08:18
【问题描述】:

我有 2 个字符串列表
例如:

listx = ["name","age","rank"]
input = ["name","age"]

如何比较两个列表以检查listx 是否包含input 中给出的"name""age"

【问题讨论】:

    标签: list haskell comparison


    【解决方案1】:

    当 B \ A 为空时,B 是 A 的子集

    所以另一种方法是

    import Data.List ((\\))
    null (input \\ listx)
    

    【讨论】:

      【解决方案2】:
      all (flip elem listx) input
      

      想到了。不知道它的效率如何......

      【讨论】:

      • 也可以写成“all (elemlistx) input”。 @dlna:基本上它扩展为“all (\x -> x elem listx) input”,这确保对于输入的每个元素,它都是 listx 的一个元素
      【解决方案3】:

      这是作业吗? :)

      您需要创建一个或两个递归函数来遍历两个列表,并搜索输入中的每个字符串。

      或者,您可以在 Prelude 中查找一些有用的功能。

      【讨论】:

      • 是的,我是 Haskell 的新手。我试过了,但我得到了一个错误。 inputIndex :: [String] -> [String] -> Bool inputIndex [] _ = [] inputIndex listx input = [x elem listx |x [String] -> [a] *** 不匹配: [String] -> [String] -> Bool
      • @dlna:你的函数返回一个布尔列表,每个 x 一个。而您只想要一个 Bool,这是所有逻辑的逻辑,所以您可以做的一件事是“inputIndex listx input = and [x elem listx |x
      • 是的。你在这。 'and' 是减少 [Bool] -> Bool 所需要的。
      【解决方案4】:

      另一种方式。

      import Data.Set
      (fromList input) `isSubsetOf` (fromList listX)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-06-21
        • 1970-01-01
        • 2018-03-01
        • 1970-01-01
        • 2012-12-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多