受此reddit 讨论的启发,我想知道在理解错误消息时,以“Dr Scheme”式的方法来帮助初学者是否存在任何技术障碍。一个典型的例子是臭名昭著的
Prelude> 1 "doesn't"
<interactive>:3:1:
No instance for (Num ([Char] -> t0))
arising from the literal `1'
Possible fix: add an instance declaration for (Num ([Char] -> t0))
In the expression: 1
In the expression: 1 "doesn't"
In an equation for `it': it = 1 "doesn't"
假设我们要做出程序员不会声明新实例的本地假设。确实,在 Haskell 中仅通过 仅与前奏类进行交互可以获得很长的路要走deriving
,所以这个假设对于初学者来说并不是不切实际的。在这样的假设下,上述错误消息将是题外话。我们可以改进它吗?我们可能仍然需要弄清楚要对 的类型说多少1
,但我们肯定可以更直接地解决这个问题。
是否有其他机会根据现实的简化假设重新构建错误消息?请注意,我是在问一个关于根据程序员经验模型更改错误消息文本的问题:我没有在本地考虑对哪些代码被认为是错误的任何更改(例如,假设初学者将在专业领域使用重载的东西类型,消除歧义)。
一个后续的想法:假设一个“配置文件”对学生进行建模,现有错误消息的文本是否包含足够的信息来支持这种转换?也就是说,一个有进取心的黑客能否在ghci
不打扰总部忙碌的人们的情况下实施一个可理解性增强的后处理器?