getArgs期待[char]而不是[string]

时间:2014-05-05 07:08:57

标签: haskell io

这个代码只在第一次使用时工作正常。 添加第二个后我收到此错误。

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)

2 个答案:

答案 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