Haskell 换行不工作
Haskell new line not working
现在已经弄乱了大约 20 分钟,试图让新行工作,但它总是在 GHCI 中显示为单行。
这是我输入 GHCi 的内容:
displayFilm ("Skyfall",["Daniel Craig", "Judi Dench", "Ralph Fiennes"], 2012, ["Bill", "Olga", "Zoe", "Paula", "Megan", "Sam", "Wally"])
这是打印的内容:
"Skyfall----------\n Cast: Daniel Craig, Judi Dench, Ralph Fiennes\n Year: 2012\n Fans: 7\n"
displayList :: [String] -> String
displayList [] = ""
displayList [x] = x ++ "" ++ displayList []
displayList (x:xs) = x ++ ", " ++ displayList xs
displayFilm :: Film -> String
displayFilm (title, cast, year, fans) =
title ++ "----------" ++
"\n Cast: " ++ (displayList cast) ++
"\n Year: " ++ (show year) ++
"\n Fans: " ++ show (length fans) ++ "\n"
要按原样打印字符串而不转义特殊字符,请使用:
putStr string
或
putStrLn string
如果你想在末尾添加一个额外的换行符。在你的情况下,你可能正在寻找
putStr (displayFilm (....))
为什么需要这个?在 GHCi 中,如果你对表达式 s
求值,结果将打印为 运行 print s
(除非它的类型为 IO something
——忘记这种特殊情况)。如果e
是一个字符串,print
转义所有特殊字符并输出结果。这是因为 print
旨在输出一个字符串,其语法遵循 Haskell 表达式中的语法。对于数字,这是通常的十进制表示法。对于字符串,我们得到引号和转义字符。
当您在 GHC 中键入一个表达式时,它会使用 print
显示它。在字符串上调用 print
显示其内容但不评估转义序列:
> print "line1\nline"
"line1\nline2"
注意引号。
要根据需要显示字符串,请使用 putStr
或 putStrLn
(后者将附加一个换行符)。
> putStr "line1\nline2"
line1
line2
现在已经弄乱了大约 20 分钟,试图让新行工作,但它总是在 GHCI 中显示为单行。
这是我输入 GHCi 的内容:
displayFilm ("Skyfall",["Daniel Craig", "Judi Dench", "Ralph Fiennes"], 2012, ["Bill", "Olga", "Zoe", "Paula", "Megan", "Sam", "Wally"])
这是打印的内容:
"Skyfall----------\n Cast: Daniel Craig, Judi Dench, Ralph Fiennes\n Year: 2012\n Fans: 7\n"
displayList :: [String] -> String
displayList [] = ""
displayList [x] = x ++ "" ++ displayList []
displayList (x:xs) = x ++ ", " ++ displayList xs
displayFilm :: Film -> String
displayFilm (title, cast, year, fans) =
title ++ "----------" ++
"\n Cast: " ++ (displayList cast) ++
"\n Year: " ++ (show year) ++
"\n Fans: " ++ show (length fans) ++ "\n"
要按原样打印字符串而不转义特殊字符,请使用:
putStr string
或
putStrLn string
如果你想在末尾添加一个额外的换行符。在你的情况下,你可能正在寻找
putStr (displayFilm (....))
为什么需要这个?在 GHCi 中,如果你对表达式 s
求值,结果将打印为 运行 print s
(除非它的类型为 IO something
——忘记这种特殊情况)。如果e
是一个字符串,print
转义所有特殊字符并输出结果。这是因为 print
旨在输出一个字符串,其语法遵循 Haskell 表达式中的语法。对于数字,这是通常的十进制表示法。对于字符串,我们得到引号和转义字符。
当您在 GHC 中键入一个表达式时,它会使用 print
显示它。在字符串上调用 print
显示其内容但不评估转义序列:
> print "line1\nline"
"line1\nline2"
注意引号。
要根据需要显示字符串,请使用 putStr
或 putStrLn
(后者将附加一个换行符)。
> putStr "line1\nline2"
line1
line2