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

有没有一种干净的方法可以在一个表达式中得到列表的开头和结尾?

  •  1
  • dmcdo  · 技术社区  · 2 年前

    是否有与之相当的东西

    (\(x : xs) -> (x, xs)) theList
    

    内置于语言中,我可以在其中写下

    let (h, t) = headAndTail theList in h : t
    

    ?

    1 回复  |  直到 2 年前
        1
  •  1
  •   chepner    2 年前

    Data.List 提供 uncons :: [a] -> Maybe (a, [a]) :

    > uncons "foo"
    Just ('f', "oo")
    

    [a] -> (a, [a]) ,你可以用 Data.Maybe.fromJust .

        2
  •  0
  •   Daniel Wagner    2 年前

    朴素的旧款装订很合身。

    let h:t = theList in h : t