Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在交互会话中,在haskell中垂直打印列表非常漂亮_Haskell_Jupyter Notebook_Ghci_Pretty Print_Ihaskell - Fatal编程技术网

在交互会话中,在haskell中垂直打印列表非常漂亮

在交互会话中,在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

在ghci会话中(恰好在jupyter内核中),我想用haskell垂直打印一个列表。(在我的用例中,我正在查看一个CSV,因此此列表表示一列数据,我希望显示能够反映这一点。)

我正在查看GenericPretty的文档:

我有以下数据:

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定义。如果不排除
前奏曲
库,则无法重新定义。