0

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

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

我尝试了 List/fold,但想不出一种惯用的方法来摆脱多余的逗号。

谢谢

4

2 回答 2

1

Prelude 有一个Text/concatSep功能,这就是您要寻找的功能:

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

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

这是源代码,如果您对它的实现方式感兴趣:

于 2019-08-29T20:13:10.073 回答
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}") ""
于 2019-08-29T19:01:20.983 回答