Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在haskell中旋转字符串,但有一些例外_Haskell - Fatal编程技术网

在haskell中旋转字符串,但有一些例外

在haskell中旋转字符串,但有一些例外,haskell,Haskell,我想在haskell中旋转一个字符串,所以如果我给“现在我想尖叫”旋转[[现在我想尖叫],[现在我想尖叫]],如果字符串以“I”或“to”开头,那么必须消除它。到现在为止,我仍然有旋转的问题 reverseWords :: String -> String reverseWords = unwords . reverse . words shiftt :: [a] -> Int -> [a] shiftt l n = drop n l ++ take n l rot::S

我想在haskell中旋转一个字符串,所以如果我给“现在我想尖叫”旋转[[现在我想尖叫],[现在我想尖叫]],如果字符串以“I”或“to”开头,那么必须消除它。到现在为止,我仍然有旋转的问题

reverseWords :: String -> String
reverseWords = unwords . reverse . words

shiftt :: [a] -> Int -> [a]
shiftt l n = drop n l  ++ take n l

rot::String->[String]
rot l = [ reverseWords l i | i <- [0 .. (length l) -1]]
reverseWords::String->String
reverseWords=unwords。相反。话
希夫特::[a]->Int->[a]
shiftt l n=下降n l++下降n l
rot::String->[String]

rot l=[reverseWords l i | i创建所有旋转的列表,然后根据谓词进行筛选。例如

rotations x = take (length x) $ iterate rot1 x
        where rot1 = drop 1 x ++ take 1 x


filteredRots = map unwords . filter (\x -> length (head x) > 2) . rotations . words
并用作

> filteredRots "Now I want to scream"

["Now I want to scream","want to scream Now I","scream Now I want to"]

前奏曲>

考虑最简单的移位,只需将头部放在尾部之后。这可以通过模式匹配非常容易地实现。然后看看
迭代
函数,它将重复将函数应用于输入,因此
迭代(+1)0
返回
[0,1,2,3,4,…]
。你如何利用它呢?在
rot
中,你给了
reverseWords
两个参数,但只需要一个。另外,我不知道旋转与反转有什么关系。我想你应该将字符串分解成一个单词列表,然后在该列表上调用
shiftt