2

我正在尝试声明一个函数,字符串列表-> 字符串,例如输入 ["Chicago","city","USA"]应该返回的函数"Chicago city USA"。到目前为止我所做的是:

fun gather ts = foldr op ^ "" ts;

这似乎有点像,但问题是,我想包括单词之间的空格,因为这个函数会返回"ChigagocityUSA".

4

2 回答 2

5

是的,问题是这个^函数对于两个字符串“foo”和“bar”返回“foobar”,尽管你想要“foo bar”。

所以你需要做的是定义一个函数,它接受两个字符串参数(作为一个元组)并返回两个字符串,它们之间有一个空格(so string1 ^ " " ^ string2)。

然后,您可以将该函数作为参数提供给foldr并获得您想要的结果。

于 2010-10-10T12:59:48.407 回答
0

使用hdtl获取 的初始值fold。这样可以避免结果中出现前导或尾随空白字符。 foldl如果您想从左到右思考,这很有用。

定义:

fun gather xs = 
      foldl (fn (x,acc) =>
                acc  ^ " " ^ x) (hd xs) (tl xs)

用法:

- gather ["what", "is", "this", "gather"];
val it = "what is this gather" : string
- 
于 2010-10-13T04:00:27.963 回答