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

欢迎!请参阅关于页面以获取更多有关这是如何工作的信息。

0 投票
tools.trace

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

9 答案

0 投票

评论由:jafingerhut

Jeremie,我不太确定,但我相信Clojure contrib库的政策是不依赖于Clojure或Clojure contrib库之外的库。

也许如果向某些现有的tools.trace函数或宏添加新的arity,sprint或其他由开发者期望的函数可以作为参数提供来控制打印方式呢?

0 投票

评论由:jgrodziski

Hi Andy,

感谢您的评论,是的,我也想到了这一点,也考虑到这将是最大的担忧...
我会看看两种可能性
- 最快的:向tools.trace函数和宏添加新参数,提供可以添加颜色和布局的过滤器
- 更好:看看将aprint代码内联是否值得考虑,或者更好的是将语法高亮功能添加到clojure.pprint,即使pprint在tools.trace中没有使用(以及像https://github.com/AvisoNovate/pretty text: Pretty)这样的整洁库可以添加到clojure.repl)。

最终,添加打印功能(无论是彩色还是布局)在可用性方面给我带来了巨大的不同...

0 投票

评论者:alexmiller

据我所知,Andy,这并不是一项政策,而是一种偏好,即尽可能减少它们。还有其他贡献者拥有外部依赖。至于Luc作为贡献者负责人,他认为这里这样做是否可以接受。

0 投票

评论者:lprefontaine

我已经研究过这个问题了。“在tools.trace中内联aprint”是我的首选。
然而,我们需要让Vlad Bokov填写一个CA(我看不到他在贡献者名单中)
并授予我们将部分源代码包含在tools.trace中的权利。

作为这个工具的常规用户,我发现这种途径很痛苦。碰巧我们使用它来
集成测试模式来钉住问题。然后输出到文件中,tty ansi命令
不受欢迎。

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

最终,这可能迁移到core.pprint,但那需要一段时间才能在Clojure版本中得到体现。

同时,我们可以将此独立保留在tools.trace中,以便以后可以将其移动到其他地方。

评论?

0 投票

评论者:lprefontaine

我已经给Vlad发了一封邮件,以及这个工单的URL。
我们先将线下讨论一下,然后再根据计划进行。

0 投票
_评论者:razum2um_

嗨Jérémie、Alex和Luc,

我是aprint的作者,很高兴你们喜欢我的库 :)
关于这一点,我有以下几点想法

1) 我真的喜欢将其推入tools.trace的想法
2) 目前,所有Clojure contrib库都有与语言相同的补丁接受政策,我对此已经有所考虑 https://github.com/clojure/clojure/pull/17#issuecomment-53628365 尝试理解,如果库依赖于另一个库,则最后一个必须遵循原始库的政策,这并不是这种情况,因为我几乎没有停止接受拉取请求。
3) 如果您无法更改此策略,我认为“内联”是最佳选择。

现在关于“什么会被内联”的问题,有几个点需要说明。

4) 我有一点惊讶,人们没有像这样 https://github.com/greglook/whidbey, 整合其意图,不喜欢颜色,他们更喜欢布局。所以可以丢弃着色,我们消除对clansi的依赖。或者我可以内联clansi(具有MIT许可证),记录一个:^dynamic 来打开颜色(默认情况下将关闭)
5) 紧凑格式布局的代码依赖于jline,它肯定不会进入里面:) 因此,这将保持印前/*print-right-margin* 默认值,默认为72,但在我个人看来不是最佳选择,但就让它这样吧。(或者你仍然在非常旧的终端上运行clojure?)
6) 我认为没有必要引入一个新的:^dynamic,我建议依赖于 pprint/*print-pretty*,如果它是真的,那就使用紧凑布局而不是pptp的默认布局

因此
- 我可以填写和签署一个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(由alewis+导入报告)
...