与SML中的foldr串联串联字符串
-
29-09-2019 - |
题
我正在尝试声明一个函数,字符串列表 - >字符串,该函数与输入有关["Chicago","city","USA"]
应该返回 "Chicago city USA"
. 。到目前为止,我所做的是:
fun gather ts = foldr op ^ "" ts;
这似乎有些沿线,但是问题是,我想包括单词之间的空间,因为此函数将返回 "ChigagocityUSA"
.
解决方案
是的,问题是 ^
是两个字符串“ foo”和“ bar”返回“ foobar”的函数,尽管您想要“ foo bar”。
因此,您需要做的是定义一个函数,该函数采用两个字符串参数(作为元组),并返回两个字符串之间的空间(所以 string1 ^ " " ^ string2
).
然后,您可以将该功能作为参数 foldr
并获得您想要的结果。
其他提示
采用 hd
和 tl
获得的价值观 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
-
不隶属于 StackOverflow