新行缩进 Haskell
New line indentation Haskell
我是Haskell的新手,有以下问题:
我打算创建函数,将三个字符串放在不同的行上。这是代码:
onThreeLines :: String -> String -> String -> String
onThreeLines a b c = a++"\n"++b++"\n"++c
这是我运行:
onThreeLines "Life" "is" "wonderful"
我得到的是:
"Life\nis\nwonderful"
下面这个字符我也试过,但还是不行
"'\n'"
您的功能有效。如果您在 GHCi 中使用 运行 this 或使用 print
,您可能会对它在计算结果上调用 show
的事实感到困惑,它将值格式化为 Haskell 调试术语。对于字符串,这意味着包括引号和转义符。
putStrLn (onThreeLines "Life" "is" "wonderful")
应该完全符合您的期望。
像这样执行它应该可以正常工作:
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
实例进行显示。
你的函数没有问题。 "Life\nis\nwonderful" 是您想要的结果字符串。请记住,如果您希望正确呈现换行符,请将其传递给 putStrLn
这样的函数
putStrLn (onThreeLines "Life" "is" "wonderful")
此外,请务必查看 unlines
函数,该函数连接字符串列表,并用换行符分隔每个元素。
我是Haskell的新手,有以下问题: 我打算创建函数,将三个字符串放在不同的行上。这是代码:
onThreeLines :: String -> String -> String -> String
onThreeLines a b c = a++"\n"++b++"\n"++c
这是我运行:
onThreeLines "Life" "is" "wonderful"
我得到的是:
"Life\nis\nwonderful"
下面这个字符我也试过,但还是不行
"'\n'"
您的功能有效。如果您在 GHCi 中使用 运行 this 或使用 print
,您可能会对它在计算结果上调用 show
的事实感到困惑,它将值格式化为 Haskell 调试术语。对于字符串,这意味着包括引号和转义符。
putStrLn (onThreeLines "Life" "is" "wonderful")
应该完全符合您的期望。
像这样执行它应该可以正常工作:
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
实例进行显示。
你的函数没有问题。 "Life\nis\nwonderful" 是您想要的结果字符串。请记住,如果您希望正确呈现换行符,请将其传递给 putStrLn
putStrLn (onThreeLines "Life" "is" "wonderful")
此外,请务必查看 unlines
函数,该函数连接字符串列表,并用换行符分隔每个元素。