【发布时间】:2015-01-20 17:36:04
【问题描述】:
Answersexist 用于如何在 Haskell 中进行漂亮打印,包括如何使用 packages 进行打印,但这更多是关于为什么我的第一种方法失败的问题。 p>
给定一个w = [r,r1,r2] 形式的二维列表,其中 w,r 分别是 w::W、r::R 的数据类型(示例中的简单变量,不是我的实际命名约定):
data X = Y | Z
deriving (Eq, Show)
data R = [X]
deriving (Eq, Show)
data W = [R]
deriving (Eq, Show)
为什么以下任何一种方法都不起作用? (我完全知道这将包括括号和逗号,这不是问题)
ppR :: R -> IO ()
ppR = putStrLn . show
还有一个
ppW :: W -> IO W (?)
ppW (w:[]) = ppR w
ppW (w:ws) = ppR w >> ppW ws
或
ppW :: W -> IO W (?)
ppW (w:[]) = putStrLn . show w
ppW (w:ws) = putStrLn . show w >> ppW ws
我不太清楚ppW的类型,我还在学习中。除了我对 Haskell 处理不纯函数的明显天真(缺乏)理解之外,我还被 ppW 类型检查的第二种方法(没有提供类型)这一事实所困扰。
为什么这种方法不起作用?您不能在 Haskell 中递归打印不确定长度的 2D 列表吗?
【问题讨论】:
标签: haskell io pretty-print