Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.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,所以我在为未来教育自己 firstLetter :: IO String firstLetter = do x <- getChar if (x == ' ') then return (show x) else firstLetter 试试这个。库函数lines将为您将输入拆分为行,因此剩下的就是从列表中的每个字符串中提取第一个字符,直到一个字符串为空。空字符串只是一个空列表,因此您可以检查它以结束对字符串列表的递归 firstLette

所以我在为未来教育自己

firstLetter :: IO String
firstLetter = do
    x <- getChar
    if (x == ' ')
        then return (show x)
        else firstLetter

试试这个。库函数
lines
将为您将输入拆分为行,因此剩下的就是从列表中的每个字符串中提取第一个字符,直到一个字符串为空。空字符串只是一个空列表,因此您可以检查它以结束对字符串列表的递归

firstLetters :: [String] -> String
firstLetters (x:xs)
    | null x = []
    | otherwise = head x : firstLetters xs

main = do
    contents <- getContents
    putStrLn . firstLetters . lines $ contents
firstLetters::[String]->String
第一个字母(x:xs)
|空x=[]
|否则=标题x:第一个字母xs
main=do
内容你看到了吗?这将帮助你消除IO,这似乎总是让事情对我来说更简单,希望你也一样

这将它简化为一个读取字符串并返回字符串的问题

这是一次艰难的尝试
getLines
获取一个字符串,将其拆分为
并使用它们(
takeWhile
),直到它遇到一个包含单个空格的行(我不确定您的结束条件,正如另一张海报所说,使用
null
将在第一个空列表处停止)。然后它遍历这些行并获取每行的第一个字符(使用
映射头


提示:空格字符不是换行符。我如何创建一个列表,在其中添加每一行的第一个字母?因为它看起来更性感,我已经将其切换为无点样式@SummerBreak,代码确实添加了每一个第一行字母<代码>映射头
检查列表中的所有项目,选择第一个字符并返回结果。但是,在插入以“”开头的行后,如何返回所有字母?这是类似的。我想您应该使用
dropWhile
而不是
takeWhile
。这将忽略元素,直到它到达第一行,即“”
firstLetters :: [String] -> String
firstLetters (x:xs)
    | null x = []
    | otherwise = head x : firstLetters xs

main = do
    contents <- getContents
    putStrLn . firstLetters . lines $ contents
getLines :: String -> String
getLines = map head . takeWhile (/= " ") . lines

main :: IO ()
main = interact getLines