因此,我要为未来教育自己

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


因此,它将获得行,直到第一行以空字符开头
我该怎么办,所以如果出现空行,它将返回所有head(x)
例如:

Liquid
Osone
Liquid
(empty line)
returns
"LOL"

最佳答案

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

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

main = do
    contents <- getContents
    putStrLn . firstLetters . lines $ contents

关于haskell - Haskell前字母,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6344754/

10-13 22:32