在prettyprinter中有没有一种方法可以创建一个零高度的空文档?emptyDoc的高度为1,这会导致出现空行。我也想避免使用Maybe来解决这个问题。
不,没有这个功能:
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]
可能是最直接的进展方式。
catMaybes :: [Maybe a] -> [a]
。 - Dan Robertsonprettyprinter
时遇到空文档处理问题的人:https://github.com/quchen/prettyprinter/issues/159 欢迎一起讨论! :) - sjakobi