代码之家  ›  专栏  ›  技术社区  ›  sanic

Haskell:使用元组和预先存在的嵌套列表

  •  0
  • sanic  · 技术社区  · 9 年前

    到目前为止,我有两个功能:

    splitLines :: String -> [[String]]
    splitLines splitLinesStr = splitWords (lines splitLinesStr)
    
    splitWords :: [String] -> [[String]]
    splitWords splitWordStr = map words splitWordStr
    

    这两种方法都有助于完成步骤1-3。然而,我不知道如何在列表中创建一个int元组和一个列表(如步骤4所述)。你会怎么做?


    阶段1:原始输入,

    "a&b b c.\na dd\n"
    

    第2阶段:原始输入,分成一系列行,如

    ["a&b b c.", "a dd"]
    

    阶段3:行列表,进一步拆分为单词列表,如

    [["a", "b", "b", "c"], ["a", "dd"]]
    

    阶段4:列表列表,“元组”,以便将行号附加到它们上,如

    [(1,["a", "b", "b", "c"]), (2,["a", "dd"])]
    

    第5阶段:单词列表(都在顶层),其中每个单词都与其行号配对,如

    [(1,"a"), (1,"b"), (1,"b"), (1,"c"), (2,"a"), (2,"dd")]
    
    1 回复  |  直到 9 年前
        1
  •  1
  •   duplode    9 年前

    提示1:可以使用以下语法生成整数的无限列表:

    [1..]
    

    提示2:有一个函数名为 zip 具有非常暗示的类型:

    zip :: [a] -> [b] -> [(a, b)]