SMLのfoldrと連結文字列
-
29-09-2019 - |
質問
私は関数、文字列リスト - >文字列、たとえば入力を宣言しようとしています["Chicago","city","USA"]
返す必要があります "Chicago city USA"
. 。私がこれまでにやったことはこれでした:
fun gather ts = foldr op ^ "" ts;
これはラインに沿ってやや沿っているようですが、問題は、この関数が戻るので、単語の間にスペースを含めたいということです。 "ChigagocityUSA"
.
解決
はい、問題はそれです ^
「foo」と「bar」が「foobar」を返す2つの文字列の関数ですが、「foo bar」が必要です。
したがって、あなたがする必要があるのは、2つの文字列引数(タプルとして)を取得し、2つの文字列をそれらの間にスペースで返す関数を定義することです(したがって) 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