在交互会话中,在haskell中垂直打印列表非常漂亮
在ghci会话中(恰好在jupyter内核中),我想用haskell垂直打印一个列表。(在我的用例中,我正在查看一个CSV,因此此列表表示一列数据,我希望显示能够反映这一点。) 我正在查看GenericPretty的文档: 我有以下数据:在交互会话中,在haskell中垂直打印列表非常漂亮,haskell,jupyter-notebook,ghci,pretty-print,ihaskell,Haskell,Jupyter Notebook,Ghci,Pretty Print,Ihaskell,在ghci会话中(恰好在jupyter内核中),我想用haskell垂直打印一个列表。(在我的用例中,我正在查看一个CSV,因此此列表表示一列数据,我希望显示能够反映这一点。) 我正在查看GenericPretty的文档: 我有以下数据: import Text.PrettyPrint.GenericPretty Prelude> toprint = ["1111111111", "2222222222", "3333333333", "4444444444", "5555555555
import Text.PrettyPrint.GenericPretty
Prelude> toprint = ["1111111111", "2222222222", "3333333333", "4444444444", "5555555555", "6666666666"]
Prelude> print toprint -- first, show standard print
["1111111111","2222222222","3333333333","4444444444","5555555555","6666666666"]
我想把它打印出来:
Prelude> pretty toprint
"[\"1111111111\",\"2222222222\",\"3333333333\",\"4444444444\",\n \"5555555555\",\"6666666666\"]"
这是不对的。您可以看到它确实添加了一个“\n”,但它不是在每行后面,有趣的是,它也没有在交互会话中执行。它呈现为文本而不是打印的
在python中,我会这样做:
>>> from pprint import pprint as pp
>>> print(['1111111111', '2222222222', '3333333333', '4444444444', '5555555555', '6666666666'])
['1111111111', '2222222222', '3333333333', '4444444444', '5555555555', '6666666666']
>>> pp(['1111111111', '2222222222', '3333333333', '4444444444', '5555555555', '6666666666'])
['1111111111',
'2222222222',
'3333333333',
'4444444444',
'5555555555',
'6666666666']
在我的会话中打印的由“\n”分隔的垂直平铺正是我想要的。如何做到这一点?解决此问题的一个方法是:
Prelude> mapM_ putStrLn toprint
1111111111
2222222222
3333333333
4444444444
5555555555
6666666666
但是,如果使用一个合适的漂亮打印库,我会更满意,因为在这个库中,我可以为每条记录提供比换行更大的灵活性。解决此问题的一个方法是:
Prelude> mapM_ putStrLn toprint
1111111111
2222222222
3333333333
4444444444
5555555555
6666666666
但我会更满意地使用一个合适的漂亮打印库,在这里,我可以为每一张唱片提供比换行更大的灵活性。Iavor Diatchki的
漂亮秀
包在这方面做得非常好:
首先,使用cabal install pretty show
安装它。然后:
Prelude> import Text.Show.Pretty
Prelude Text.Show.Pretty> putStrLn $ ppShow ["1111111111", "2222222222", "3333333333", "4444444444", "5555555555", "6666666666"]
[ "1111111111"
, "2222222222"
, "3333333333"
, "4444444444"
, "5555555555"
, "6666666666"
]
您甚至可以指示ghci自动执行此操作,因此您不必亲自调用ppShow
:
Prelude> import Text.Show.Pretty (ppShow, pPrint)
Prelude Text.Show.Pretty> :set -interactive-print pPrint
Prelude Text.Show.Pretty> ["1111111111", "2222222222", "3333333333", "4444444444", "5555555555", "6666666666"]
[ "1111111111"
, "2222222222"
, "3333333333"
, "4444444444"
, "5555555555"
, "6666666666"
]
您可以将相关说明放在
.ghci
文件中,这样,如果您愿意,就可以自动执行此操作。有关详细信息,请参阅此博客帖子:Iavor Diatchki的美丽秀
包在这方面做得非常好:
首先,使用cabal install pretty show
安装它。然后:
Prelude> import Text.Show.Pretty
Prelude Text.Show.Pretty> putStrLn $ ppShow ["1111111111", "2222222222", "3333333333", "4444444444", "5555555555", "6666666666"]
[ "1111111111"
, "2222222222"
, "3333333333"
, "4444444444"
, "5555555555"
, "6666666666"
]
您甚至可以指示ghci自动执行此操作,因此您不必亲自调用ppShow
:
Prelude> import Text.Show.Pretty (ppShow, pPrint)
Prelude Text.Show.Pretty> :set -interactive-print pPrint
Prelude Text.Show.Pretty> ["1111111111", "2222222222", "3333333333", "4444444444", "5555555555", "6666666666"]
[ "1111111111"
, "2222222222"
, "3333333333"
, "4444444444"
, "5555555555"
, "6666666666"
]
您可以将相关说明放在
.ghci
文件中,这样,如果您愿意,就可以自动执行此操作。有关详细信息,请参阅此博客帖子:有用吗<代码>putStr。康卡特。散布“\n”。地图显示$[“1111111111”、“2222222”、“3333333”、“444444”、“55555555”、“66666666”]GHCi打印由show
typeclass定义。如果不排除Prelude
库,则无法重新定义它。它有用吗<代码>putStr。康卡特。散布“\n”。地图显示$[“1111111111”、“2222222”、“3333333”、“444444”、“55555555”、“66666666”]GHCi打印由show
typeclass定义。如果不排除前奏曲
库,则无法重新定义。