Haskell:将字符串转换为句子
我在学习哈斯克尔,我遇到了一个问题。 类型必须为:Haskell:将字符串转换为句子,haskell,Haskell,我在学习哈斯克尔,我遇到了一个问题。 类型必须为:句子::[String]->[String] 我想把字符串转换成句子 ["something","","Asd dsa abc","hello world..",""] 如下所示:[“某物”,“Asd dsa abc”,“你好,世界…”] 我想用一个高阶函数,比如map。 我就是想不出怎么做这个 我设法使用一个字符串: import Data.Char sentences :: String -> String sentences []
句子::[String]->[String]
我想把字符串转换成句子
["something","","Asd dsa abc","hello world..",""]
如下所示:[“某物”,“Asd dsa abc”,“你好,世界…”]
我想用一个高阶函数,比如map。
我就是想不出怎么做这个
我设法使用一个字符串:
import Data.Char
sentences :: String -> String
sentences [] = []
sentences (a:as) = (( toUpper a):as) ++ "."
所以我从中得到:
sentences "sas das asd"
此:“Sas das asd。”
我希望有人能帮我解决这个问题。
谢谢你的帮助
编辑:感谢您的帮助,现在看起来是这样的:
import Data.Char
sentences :: [String] -> [String]
sentence (a:as) = ((toUpper a):as)++['.']
sentences = map sentence
但是我不知道该把过滤器放在哪里,你的函数加上map可以让你半途而废,但是它不会从字符串列表中删除空字符串。您可以使用过滤器来完成此操作,因此
sentences ss = map sentence $ filter (/="") ss
请注意,句子
(复数)的核心只是将句子
(单数)映射到字符串列表上。过滤器仅用于删除空字符串。如果没有这个要求,它将只是句子ss=map句子ss
现在,您可以使用字符串列表调用语句
,以转换每个元素,除了通过过滤器删除的空字符串
通常,如果您有一个函数foo
将bar
转换为baz
,则可以使用map foo
将[bar]
转换为[baz]
filter
与map
一样,是一个高阶函数,给定一个谓词函数和一个列表,它返回一个由谓词为True
的元素组成的列表。在本例中,我们给出了谓词函数(/=“”)
,它对于所有非空字符串都是True
。您的函数加上map可以让您半途而废,但它不会从字符串列表中删除空字符串。您可以使用过滤器来完成此操作,因此
sentences ss = map sentence $ filter (/="") ss
请注意,句子
(复数)的核心只是将句子
(单数)映射到字符串列表上。过滤器仅用于删除空字符串。如果没有这个要求,它将只是句子ss=map句子ss
现在,您可以使用字符串列表调用语句
,以转换每个元素,除了通过过滤器删除的空字符串
通常,如果您有一个函数foo
将bar
转换为baz
,则可以使用map foo
将[bar]
转换为[baz]
filter
与map
一样,是一个高阶函数,给定一个谓词函数和一个列表,它返回一个由谓词为True
的元素组成的列表。在本例中,我们给出了谓词函数(/=“”)
,它对于所有非空字符串都是True
。您也可以通过列表理解来实现
import Data.Char
capFirst (l:ls) = toUpper l : ls ++ "."
sentences strings = [
capFirst sentence | sentence <- strings,
sentence /= []
]
main = print $ sentences ["something","","Asd dsa abc","hello world..",""]
导入数据.Char
capFirst(l:ls)=toUpper l:ls++”
句子字符串=[
capFirst句子|句子你也可以通过列表理解来完成
import Data.Char
capFirst (l:ls) = toUpper l : ls ++ "."
sentences strings = [
capFirst sentence | sentence <- strings,
sentence /= []
]
main = print $ sentences ["something","","Asd dsa abc","hello world..",""]
导入数据.Char
capFirst(l:ls)=toUpper l:ls++”
句子字符串=[
capFirst句子|句子我编辑了我的问题,谢谢你的帮助,你能再帮我一点吗?我需要把过滤器放在哪里?我编辑了我的问题,谢谢你的帮助,你能再帮我一点吗?我需要把过滤器放在哪里?