我正在努力完成一系列配对,[(a,a)],但我无法让它发挥作用。我试过像:
showList :: [(a, a)] -> IO ()
showList (x, y):[] = putStrLn (x, y)
showList (x, y):xs = do
putStrLn (x, y)
showList xs
对此有何解决方案?我喜欢我在那里所做的事情。
答案 0 :(得分:3)
空格不会影响运算符优先级。
showList (x, y):[]
解析为(showList (x, y)) : []
。
函数应用程序的优先级高于任何中缀运算符,包括:
。
你想要
showList ((x, y) : []) = ...
答案 1 :(得分:0)
你最大的错误是你认为元组是一个字符串。
元组(x, y)
不是字符串。
putStrLn :: String -> IO ()
的签名需要一个String作为它的参数。
您可以使用print :: Show a => a -> IO ()
打印任何具有Show实例的内容。
作为旁注:您可以使用mapM_ print
代替。