2

这就是我想要做的:

如果我给 $hello world我会得到world

我正在做的是这样的:

tail (unwords (words "$hello world")) 但我得到"hello world"而不是world

我该怎么做才能让它正确?

4

3 回答 3

8

您必须在unwords之后申请tail,而不是相反。

预期的步骤顺序(可能)如下:

  1. 将字符串分解为单词列表
  2. 从列表中删除第一个单词
  3. 将剩余的单词加入字符串

你这样做的方式是拆分并立即重新加入单词,然后你只需删除结果字符串的第一个字符(因为字符串只是一个字符列表)。

于 2013-10-16T13:48:03.777 回答
2

你想做的是

unwords $ tail $ words "$hello world"

在 GHCi 中通过它我们得到

> words "$hello world"
["$hello", "world"]
> tail $ words "$hello world"
["world"]
> unwords $ tail $ words "$hello world"
"world"
于 2013-10-16T13:51:32.007 回答
0

正如 fjh 正确指出的那样,字符串数组["$hello", "world"]被重新连接成一个字符串"$hello world"tail然后切掉第一个 Char $。我建议使用该函数last,而不是tail $ unwords从单词数组中获取最后一个元素world

Prelude> last $ words $ "$hello world"
"world"
于 2013-10-17T05:19:48.340 回答