如何连接ATS中的字符串列表?

时间:2016-10-28 13:20:19

标签: ats

基本上,我想要的是以下界面的功能:

fun stringlst2string (list0(string)): string

其中stringlst2string获取字符串列表并返回它们的串联。

2 个答案:

答案 0 :(得分:1)

可以使用标准库函数stringlst_concat来完成此任务。有关解释,请参阅the reference,有关工作示例,请参阅this snippet

答案 1 :(得分:0)

通过线性流可以很容易地做到这种事情(即,将一种形式的序列转换成另一种形式的序列)。例如,下面的代码将字符串列表转换为字符串流,然后转换为流(字符串)流,然后转换为字符流,然后转换为字符串:

fun
stringlst2string
(
xs: list0(string)
) : string =
strptr2string
(
string_make_stream_vt
(
stream_vt_concat
  ((streamize_list0_elt(xs)).map(TYPE{stream_vt(charNZ)})(lam x => streamize_string_char(x)))
)
)

就内存使用而言,这是一个非常精简的实现,并且没有最终未发布的内存(除了存储返回字符串所需的内存)。显然,如果要连接字符串数组,则应用相同的方法。