如何在dhall中模拟Python join函数?

时间:2019-08-28 23:19:16

标签: dhall

我是新手,没有Haskell背景。如何将字符串列表转换为具有逗号分隔值的单个字符串? 例如

["a", "b", "c"] -> "a,b,c"

我尝试了List / fold,但无法找出一种惯用的方式来消除多余的逗号。

谢谢

2 个答案:

答案 0 :(得分:1)

序曲具有Text/concatSep功能,这是您要寻找的功能:

let Text/concatSep = https://prelude.dhall-lang.org/Text/concatSep

in  Text/concatSep "," [ "a", "b", "c" ]

如果您对如何实现感兴趣,请在此处查看源代码。

答案 1 :(得分:0)

除非有人提供更好的答案,否则以下方法似乎可行:

\(xs: List Text) ->
    let b = {index: Natural, value: Text}
    let ys = List/indexed Text xs
    let dlm = \(i: Natural) -> if Natural/isZero i then "" else ","
in List/fold b ys Text (\(x: b) -> \(y: Text) -> "${dlm x.index}${x.value}${y}") ""