如何在 haskell 中编写反向单词函数
how to write an reversed words function in haskell
编写一个程序,在无限循环中读取文本,每个单词
翻过来然后放回原处作为文本。如果输入为空,程序应该
中止,停止。
为此,编写一个 reverseWords::String -> String
函数来执行反转
正在工作。
例如:
reverseWords "Hello World, 123" -> "olleH ,dlroW 321"
我的代码
reverseWords :: String -> String
reverseWords = unwords . reverse . words
不起作用
函数 reverse
反转整个列表,因此您得到的单词顺序相反。相反,您想要的是分别反转 每个元素 ,可以用 map
:
修复
reverseWords = unwords . map reverse . words
如果您需要保留 ' '
以外的间距字符,那么事情就会变得有点棘手。幸运的是,split
软件包可以提供帮助。
import Data.List.Split
import Data.Char
reverseWords :: String -> String
reverseWords = concatMap reverse . split (whenElt isSpace)
编写一个程序,在无限循环中读取文本,每个单词
翻过来然后放回原处作为文本。如果输入为空,程序应该
中止,停止。
为此,编写一个 reverseWords::String -> String
函数来执行反转
正在工作。
例如:
reverseWords "Hello World, 123" -> "olleH ,dlroW 321"
我的代码
reverseWords :: String -> String
reverseWords = unwords . reverse . words
不起作用
函数 reverse
反转整个列表,因此您得到的单词顺序相反。相反,您想要的是分别反转 每个元素 ,可以用 map
:
reverseWords = unwords . map reverse . words
如果您需要保留 ' '
以外的间距字符,那么事情就会变得有点棘手。幸运的是,split
软件包可以提供帮助。
import Data.List.Split
import Data.Char
reverseWords :: String -> String
reverseWords = concatMap reverse . split (whenElt isSpace)