这个代码只在第一次使用时工作正常。 添加第二个后我收到此错误。
Couldn't match expected type 'Char' with actual type 'String'
Expected type: [Char]
Actual type: [String]
In the first argument of `(++)', namely `first'
In the second argument of `(++)', namely `first ++ " " ++ last !! 0'
这对我没有意义,因为getArg
假设生成一个字符串列表。
module Main where
import System.Environment
main :: IO ()
main = do
first <- getArgs
last <- getArgs
putStrLn ("Hello" ++ first ++ last !! 0)
答案 0 :(得分:3)
getArgs
返回字符串列表,而不是字符串。您可以像这样使用它:
module Main where
import System.Environment
main :: IO ()
main = do
args <- getArgs
putStrLn ("Hello" ++ (args !! 0) ++ (args !! 1))
当然,这只是对如何使用getArgs
的演示。在实际程序中,您需要确保在实际使用它们之前给予足够的参数。
答案 1 :(得分:1)
您正在尝试将“Hello”连接到first
这是一个字符串列表。
我也不明白你为什么要两次使用getArgs。 first == last
。