作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在从 H 切换到 L
import qualified Text.PrettyPrint.HughesPJ as H
import qualified Text.PrettyPrint.Leijen as L
H.fsep $ map ( \ d -> H.parens $ H.fsep $ replicate 4 d ) $ map (H.text . show) [1..10]
(1 1 1 1) (2 2 2 2) (3 3 3 3) (4 4 4 4) (5 5 5 5) (6 6 6 6)
(7 7 7 7) (8 8 8 8) (9 9 9 9) (10 10 10 10)
L.fillSep $ map ( \ d -> L.parens $ L.fillSep $ replicate 4 d ) $ map (L.text . show) [1..10]
(1 1 1 1) (2 2 2 2) (3 3 3 3) (4
4 4 4) (5 5 5 5) (6 6 6 6) (7 7
7 7) (8 8 8 8) (9 9 9 9) (10 10
10 10)
L.fillSep $ map ( \ d -> L.parens $ L.align $ L.fillSep $ replicate 4 d ) $ map (L.text . show) [1..10]
(1 1 1 1) (2 2 2 2) (3 3 3 3) (4
4 4 4) (5 5 5 5) (6 6 6 6) (7 7
7 7) (8 8 8 8) (9 9 9
9)
(10 10 10 10)
最佳答案
一个简单的解决方案是使用 hsep
括号内
λ> L.fillSep $ map (\d -> L.parens $ L.hsep $ replicate 4 d) $ map (L.text . show) [1..10]
(1 1 1 1) (2 2 2 2) (3 3 3 3)
(4 4 4 4) (5 5 5 5) (6 6 6 6)
(7 7 7 7) (8 8 8 8) (9 9 9 9)
(10 10 10 10)
fsep :: [L.Doc] -> L.Doc
fsep = foldl1 (\x y -> x L.<> (L.group $ L.line L.<> y))
λ> fsep $ map (\d -> L.parens $ L.fillSep $ replicate 4 d) $ map (L.text . show) [1..10]
(1 1 1 1) (2 2 2 2) (3 3 3 3)
(4 4 4 4) (5 5 5 5) (6 6 6 6)
(7 7 7 7) (8 8 8 8) (9 9 9 9)
(10 10 10 10)
group
通过更改所有
line
将输出放在一行上。转至
space
如果结果输出适合当前行,否则保持原始格式。所以
fsep
输出列表的开头,如果下一项完全适契约(Contract)一行,则将其附加到该行。否则在下一个列表元素之前插入一个换行符。
group
更容易控制输出。手动,而不是依赖
softline
和
</>
.
关于haskell - 如何在 Text.PrettyPrint.Leijen 中获取 Text.PrettyPrint.HughesPJ.fsep 行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21650932/
我正在从 H 切换到 L import qualified Text.PrettyPrint.HughesPJ as H import qualified Text.PrettyPrint.Leije
我是一名优秀的程序员,十分优秀!