質問

私は関数、文字列リスト - >文字列、たとえば入力を宣言しようとしています["Chicago","city","USA"] 返す必要があります "Chicago city USA". 。私がこれまでにやったことはこれでした:

fun gather ts = foldr op ^ "" ts;

これはラインに沿ってやや沿っているようですが、問題は、この関数が戻るので、単語の間にスペースを含めたいということです。 "ChigagocityUSA".

役に立ちましたか?

解決

はい、問題はそれです ^ 「foo」と「bar」が「foobar」を返す2つの文字列の関数ですが、「foo bar」が必要です。

したがって、あなたがする必要があるのは、2つの文字列引数(タプルとして)を取得し、2つの文字列をそれらの間にスペースで返す関数を定義することです(したがって) string1 ^ " " ^ string2).

その後、その機能を議論として与えることができます foldr そして、あなたが望む結果を取得します。

他のヒント

使用する 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
- 
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top