我是Haskell的完全新手,并提出以下问题: 我打算创建这个函数,它将三个字符串放在不同的行上。这是代码:
onThreeLines :: String -> String -> String -> String
onThreeLines a b c = a++"\n"++b++"\n"++c
以下是我的观点:
onThreeLines "Life" "is" "wonderful"
我得到了什么:
"Life\nis\nwonderful"
我也尝试过以下角色,但它也不起作用。
"'\n'"
答案 0 :(得分:4)
执行此操作应该可以使它工作:
main :: IO ()
main = putStrLn $ onThreeLines "hello" "world" "test"
执行程序,我得到:
$ ./test.hs
hello
world
test
您获得"Life\nis\nwonderful"
的原因是因为Show
实例正用于显示哪些内容将转义换行符。
λ> putStrLn "hello\nworld"
hello
world
λ> print "hello\nworld"
"hello\nworld"
请注意,print
使用Show
实例进行显示。
答案 1 :(得分:2)
你的功能没有任何问题。 "生命\ NIS \ nwonderful"是你想要的结果字符串。请记住,如果您希望正确呈现换行符,请将其传递给putStrLn
putStrLn (onThreeLines "Life" "is" "wonderful")
另外,请务必查看连接字符串列表的unlines
函数,用换行符分隔每个元素。