Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.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,我在学习哈斯克尔,我遇到了一个问题。 类型必须为:句子::[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句子|句子我编辑了我的问题,谢谢你的帮助,你能再帮我一点吗?我需要把过滤器放在哪里?我编辑了我的问题,谢谢你的帮助,你能再帮我一点吗?我需要把过滤器放在哪里?