Haskell中的对的进程列表

时间:2018-06-05 18:20:41

标签: haskell functional-programming

我正在努力完成一系列配对,[(a,a)],但我无法让它发挥作用。我试过像:

showList :: [(a, a)] -> IO ()
showList (x, y):[] = putStrLn (x, y)
showList (x, y):xs = do 
    putStrLn (x, y)
    showList xs

对此有何解决方案?我喜欢我在那里所做的事情。

2 个答案:

答案 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代替。