问题
defaultFileName :: [Char]
defaultFileName = "Test.log"
defaultSearchName :: String
defaultSearchName = "xyz"
This code can be compiled:
a3 :: Int -> [[Char]] -> IO [Char]
a3 index arg =
if null arg
then do
a <- putStrLn "No parameters have been passed."
a <- putStrLn $ "1 Default search string: " ++ defaultSearchName
a <- putStrLn ("2 Default file name: " ++ defaultFileName)
return defaultFileName
else return (arg!!index)
once I add an extra IF-THEN-ELSE, I cannot compile it anymore
a3 :: Int -> [[Char]] -> IO [Char]
a3 index arg =
if null arg
then do
a <- putStrLn "No parameters have been passed."
a <- putStrLn $ "1 Default search string: " ++ defaultSearchName
a <- putStrLn ("2 Default file name: " ++ defaultFileName)
if index == 0
then return defaultSearchName
else return defaultFileName
else return (arg!!index)
why???? It is so frustrating with every single step.
回答1:
Your code compiles fine. Are you sure you don't have tabs and spaces interleaved there as an indentation?
Try ghci -fwarn-tabs yourfile.hs
来源:https://stackoverflow.com/questions/35060673/parse-error-in-nested-if-do-blocks