Haskell在我的主要职能中似乎对空格非常挑剔。
以下很好地编译
module Main where
import System.Environment
main :: IO()
main = do args <- getArgs
putStrLn ("Hello, " ++ args !! 0)
但是以下两个程序给了我一个解析错误
module Main where
import System.Environment
main :: IO()
main = do args <- getArgs
putStrLn ("Hello, " ++ args !! 0)
和
module Main where
import System.Environment
main :: IO()
main = do args <- getArgs
putStrLn ("Hello, " ++ args !! 0)
似乎printStrLn
必须与args
haskell对齐或合适。这似乎是不必要的。为什么Haskell会这样做?
为了增加Mephy的答案,虽然以通常的Haskell风格编写的Haskell确实关心缩进(在规范中称为“布局”),但是您可以以忽略缩进的样式编写代码:
module Main where {
import System.Environment;
main :: IO ();
main = do {
args <- getArgs;
putStrLn ("Hello, " ++ args !! 0)
}
}
您通常不会看到此样式用于整个模块。有时您会看到它被用于单个shortdo
或let
block之类的东西(您可以混合使用两种样式),但是大多数人都依赖于布局。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句