是否可以在prettyprinter中创建零高度的空文档? emptyDoc的高度为1,然后导致空行。我也想避免使用Maybes解决此问题。
答案 0 :(得分:1)
否,there isn't:
data Doc ann =
Fail
| Empty
| Char !Char
| Text !Int !Text
| Line
| FlatAlt (Doc ann) (Doc ann)
| Cat (Doc ann) (Doc ann)
| Nest !Int (Doc ann)
| Union (Doc ann) (Doc ann)
| Column (Int -> Doc ann)
| WithPageWidth (PageWidth -> Doc ann)
| Nesting (Int -> Doc ann)
| Annotated ann (Doc ann)
这些都不对应任何高度小于1的东西-最接近的是Empty
,但这被解释为高度为1的空文档(而您的emptyDoc
是emptyDoc = Empty
)。
这似乎有些不明智。也许可以考虑为库添加一个真正的空文档的补丁。这肯定是最干净的方法。
另一种可能性是使用注释机制制作“此块的高度为0”注释,并编写自己的渲染器来处理该注释。
但是在可能需要高度为0的文档的位置上适当使用Maybe (Doc foo)
或[Doc foo]
可能是取得进展的最直接方法。