- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我看到很多资源强烈鼓励程序员不要使用Debug.Trace
。由于缺乏引用透明度,来自生产代码。我仍然不完全理解这个问题,并且似乎无法找到根本原因。
我的理解是,跟踪不能改变任何表达式的输出(尽管它在某些情况下会导致表达式以不同的顺序执行,或者导致表达式被评估,否则会被懒惰地跳过)。所以跟踪不会影响纯函数的输出。它不能抛出任何类型的错误。那么,它为什么会受到如此强烈的反对呢? (如果我上面的任何假设不正确,请指出!)。这只是一场哲学辩论,还是一场表演,或者它实际上会以某种方式引入一个错误?
在使用其他不太严格的语言进行编程时,我经常发现拥有一个感兴趣的生产应用程序日志值来帮助诊断我无法在本地重现的问题很有值(value)。
最佳答案
当然 trace foo bar
可以抛出比 bar
更多的错误:它可以(将)抛出任何错误foo
扔!
但这并不是避免它的真正原因。真正的原因是您通常希望程序员能够控制输出发生的顺序。您不希望您的调试语句说“Foo 正在发生!”打断自己并说“Foo is hapBar is正在发生!pening!”,例如;并且您不希望潜在的调试语句仅仅因为它包装的值从未被需要而枯萎未打印。控制这个顺序的正确方法是承认你在做IO
并将其反射(reflect)在您的类型中。
关于haskell - 为什么 Debug.Trace 是邪恶的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46494499/
对于线程和计时器之类的东西,我无法忍受拖放控件。这些控件只是感觉与它们存在的实际本质相去甚远。拖放一个线程?我希望拖拽者在他们这样做之前了解幕后发生的事情。 这些抽象是否离金属太远了?他们是在帮助还是
有些人似乎认为 C 的 strcpy() 函数不好或邪恶。虽然我承认通常最好使用 strncpy() 来避免缓冲区溢出,但以下(strdup() 函数的实现对于那些不幸的人来说拥有它)安全地使用 st
我一直在用 matrix = *((fxMatrix*)&d3dMatrix); 好久不见。它工作正常,直到我的屏幕变黑并在我的办公 table 上收到一桶挫败感。 fxMatrix 包含 4 个 f
这是我应该问的问题,而不是这个: Emacs evil: space as a prefix key in motion state 我想定义一堆用于移动、移动、打开和关闭窗口和缓冲区的命令,这些命令
作为 Vim 用户,我在将近二十年后尝试 Emacs+Evil。我正在将我的大部分 Vim 配置移至 Evil,但我遇到很多问题的一件事是像我在 Vim 中使用的那样设置搜索和突出显示。我想要得到的是
很难说出这里问的是什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或言辞激烈,无法以目前的形式合理回答。如需帮助澄清此问题以便可以重新打开,visit the help center . 9年前关闭
我是一名优秀的程序员,十分优秀!