2024年Clojure状态调查!中分享您的看法。

欢迎!请参阅关于页面以了解更多关于该网站如何运作的信息。

0
tools.trace

问题:当使用trace-ns时,在输出流中显示非常长的值时,如果函数调用的 重要且数据结构庞大,则难以阅读。
解决方案:当在输出字符串中打印值时,使用(链接:https://github.com/razum2um/aprint 文字:Aprint库),现在获得语法高亮和更好的数据结构布局。
权衡:向tools.trace添加新的依赖项
测试:是的,修改清理函数以同时清理由aprint添加的颜色信息,因此100%的测试通过

9 答案

0

由jafingerhut发表的评论

Jeremie,我不确定,但我相信Clojure contrib库的策略是不依赖于除Clojure或Clojure contrib之外的其他库。

也许可以在一些现有的tools.trace函数或宏中添加新的arity,然后可以将sprint或任何其他开发者希望的功能作为参数提供,以控制打印方式?

0

由jgrodziski发表的评论

Hi Andy,

感谢您的评论,是的,我想到了这一点,并且知道这将是最大的担忧...
我将看一下两种可能性
- 速度最快:向tools.trace函数和宏添加新参数,为添加颜色和布局提供 filtrer
- 最好的:看看内联aprint代码是否值得考虑,或者更好的是将语法高亮功能添加到clojure.pprint中,尽管在tools.trace中不使用pprint(以及一些如(链接:https://github.com/AvisoNovate/

最后,添加aprint(颜色和布局)对我的可用性产生了巨大的影响...

0

评论者:alexmiller

Andy,据我所知,这并非政策,而是一个尽可能地减少它们的首选。还有一些其他有外部依赖的社区贡献者。Luc作为社区贡献的负责人,他认为这里这样做是否可以接受。

0

评论者:lprefontaine

我调查了这个问题。'在tools.trace中内联aprint'是我的首选。
但是我们需要让Vlad Bokov填写一个CA(我没有在贡献者列表中看到他)
并授予我们在tools.trace中包含部分源代码的权利。

作为一个这个工具的常规用户,我发现arity方式很痛苦。我们有时在使用
集成测试模式时用其解决问题。然后输出到一个文件,ttys ansi命令是不受欢迎的。
的。

我认为我们需要一个模式状态来启用/禁用这个功能。在repl中,你需要一个单独的
语句来获取彩色输出,无论你调用的是哪个迹函数。这可以是你的
用户配置文件的一部分。

最终,这可以迁移到core.pprint,但那需要一段时间才能在Clojure发行版中实现。

与此同时,我们可以将这个功能保持隔离在tools.trace中,以便以后将其移动到其他地方。

有什么评论吗?

0

评论者:lprefontaine

我给Vlad发送了一封邮件,并附上了这个事务的网址。
我们将首先进行讨论,然后根据情况继续执行计划。

0
_评论者:razum2um_

Hi Jérémie,Alex和Luc,

我是aprint的作者,非常高兴你们喜欢我的库!)
以下是关于它的想法:

1) 我真的很喜欢将其推入tools.trace的想法
2) 目前,所有的Clojure contrib-libs和政策与其他语言一样,这我已经很疑惑 https://github.com/clojure/clojure/pull/17#issuecomment-53628365 尝试了解,如果库依赖于另一个,最后一个必须与原始库共享相同的策略,这不是案例,因为我几乎停止接受合并请求。
3) 如果不能改变这个策略,我看到“内联”是最佳选择。

现在谈一下关于“什么将被内联?”这个问题的一些观点。

4) 我有些惊讶,人们没有像我想的那样,与repl集成,他们不喜欢颜色,他们只喜欢布局。因此,我们可以去掉颜色并将其从依赖于clansi中消除。或者,我可以在clansi(MIT许可证)中内联,并记录一个`:^dynamic`来开启颜色(默认情况下是关闭的)。
5) 紧凑布局的代码依赖于jline,它肯定不会内联。因此,这将保持为`pprint/*print-right-margin*`的默认值,即72,这不是我最好的选择,但就这样吧。(或者你还在用非常旧的终端运行clojure?)
6) 我认为引入一个新的`:^dynamic`来处理它并没有意义,我建议依赖`pprint/*print-pretty*`,如果它是真的,则使用紧凑布局而不是pprint的默认布局。

因此
- 我可以填写并签署一份CA
- 准备一个依赖项无自由的补丁给您,该补丁仅包含紧凑布局(如果需要,包括颜色),并由`pprint/*print-pretty*`和`pprint/*print-right-margin*`控制
0

评论者:lprefontaine

嗨,Vlad,

这个有什么改变吗?

我即将发布0.7.9。不知道你是否有时间完成以上步骤。

Luc P.

0

评论者:lprefontaine

顺便说一句,

我还在Hollerith卡上敲打Clojure代码,所以当一行超过80个字符并且最后8列无论如何都是不可用的时,我处于不熟悉的领域:
:)

0
参考:https://clojure.atlassian.net/browse/TTRACE-9(由alexi+import报告)
...