Debugging 为什么`traceId`返回消息字符串本身?
我发现返回消息字符串本身非常奇怪。为什么会有人想这么做 是否有一种常见的情况下,Debugging 为什么`traceId`返回消息字符串本身?,debugging,haskell,Debugging,Haskell,我发现返回消息字符串本身非常奇怪。为什么会有人想这么做 是否有一种常见的情况下,traceId会派上用场?编辑: 感谢David,他提请注意我的traceId'正是traceShowId 因此,traecId只是多态的traceShowId::Show a->a->a的String->String单态版本,它还将打印的字符串从引号中删除 旧答案: 解释traceId的一种方法是,它是一个字符串——一个更通用的traceId'的专用版本,不在stdlib中: traceId':显示a=>a->a
traceId
会派上用场?编辑:
感谢David,他提请注意我的traceId'
正是traceShowId
因此,traecId
只是多态的traceShowId::Show a->a->a
的String->String
单态版本,它还将打印的字符串从引号中删除
旧答案:
解释traceId
的一种方法是,它是一个字符串
——一个更通用的traceId'
的专用版本,不在stdlib中:
traceId':显示a=>a->a
traceId'x=跟踪(显示x)x
所以
traceId=traceId':字符串->字符串
示例:
my=id;func=id;链=id;值=3
main=do
打印$length$traceId“链被调用!”
打印$length$traceId'[1,2,3]
但是由于某种原因,
traceId
的通用版本,我称之为traceId'
,不在stdlib中。traceMsg=trace
..@ErikAllik:对不起,我编辑了这个问题。哼哼。。。有趣的景色。(顺便说一句,从技术上讲,traceId'
在String
的情况下并不完全是traceId
,因为traceId
使用id
而不是show
,这意味着打印时字符串是不带空格和引号的)我想原因更多的是出于一致性考虑traceId
应该和它的名字一模一样--trace
的第一个参数与第二个参数相同。事实上,我很好奇是否有人能对traceId
给出更好的解释-比如为什么它不首先显示a=>a
。我认为traceId'
是traceShowId
,在Debug.Trace
中,traceId'
/traceShowId
会有双引号,而traceId
(我怀疑)不会。但我还没试过。