如何在 dhall 中模拟 Python join 函数?
how to emulate Python join function in dhall?
我是 dhall 的新手,没有 Haskell 背景。如何将字符串列表转换为值以逗号分隔的单个字符串?
例如
["a", "b", "c"] -> "a,b,c"
我尝试了 List/fold,但无法找到摆脱多余逗号的惯用方法。
谢谢
除非有人提供更好的答案,否则以下似乎有效:
\(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}") ""
Prelude 有一个 Text/concatSep
功能,这就是您要找的:
let Text/concatSep = https://prelude.dhall-lang.org/Text/concatSep
in Text/concatSep "," [ "a", "b", "c" ]
这是源代码,如果您对它的实现方式感兴趣的话:
我是 dhall 的新手,没有 Haskell 背景。如何将字符串列表转换为值以逗号分隔的单个字符串? 例如
["a", "b", "c"] -> "a,b,c"
我尝试了 List/fold,但无法找到摆脱多余逗号的惯用方法。
谢谢
除非有人提供更好的答案,否则以下似乎有效:
\(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}") ""
Prelude 有一个 Text/concatSep
功能,这就是您要找的:
let Text/concatSep = https://prelude.dhall-lang.org/Text/concatSep
in Text/concatSep "," [ "a", "b", "c" ]
这是源代码,如果您对它的实现方式感兴趣的话: