这就是我想要做的事:哈斯克尔尾部分割
如果我给 $hello world
我会得到world
我在做什么是这样的:
tail (unwords (words "$hello world"))
但我得到"hello world"
而不是world
我该怎么做才能让它正确无误?
这就是我想要做的事:哈斯克尔尾部分割
如果我给 $hello world
我会得到world
我在做什么是这样的:
tail (unwords (words "$hello world"))
但我得到"hello world"
而不是world
我该怎么做才能让它正确无误?
您必须在tail
之后应用unwords
,而不是相反。
步骤的目的顺序是(可能)如下:
你这样做的方式,你分裂并立即重新加入单词,然后你只是放弃结果字符串的第一个字符(因为一个字符串只是一个字符列表)。
什么你想要做的是
unwords $ tail $ words "$hello world"
通过它在GHCI合作,我们得到
> words "$hello world"
["$hello", "world"]
> tail $ words "$hello world"
["world"]
> unwords $ tail $ words "$hello world"
"world"
正如FJH正确地指出,串["$hello", "world"]
阵列被重新加入到一个字符串"$hello world"
和tail
然后剁掉第一个字符$
。我建议使用函数last
而不是tail $ unwords
,它将从字数组world
中获取最后一个元素。
Prelude> last $ words $ "$hello world"
"world"
虽然我喜欢你如何指出OP做错了什么,但从技术上讲这是缺少问题的解决方案。无论如何。 – Waldheinz
@Waldheinz:错误。解决方案是答案的第一行。 – Sarah