为什么`traceId`会返回消息字符串本身?

时间:2015-10-10 21:59:07

标签: debugging haskell

我发现traceId返回消息字符串本身真的很奇怪。为什么有人想这样做?

是否存在traceId会派上用场的常见情况?

1 个答案:

答案 0 :(得分:2)

修改

对大卫的信任,他提请注意我的traceId'正是traceShowId

因此,traecId只是多态String -> String的{​​{1}}单态版本,它也会从引号中删除打印的字符串。

旧回答:

解释traceShowId :: Show a -> a -> a的一种方法是,它是traceId - 更通用String的专用版本,不在stdlib中:

traceId'

这样

traceId' :: Show a => a -> a
traceId' x = trace (show x) x

示例:

traceId = traceId' :: String -> String

但出于某种原因,my = id; func = id; chain = id; value = 3 main = do print $ length $ traceId "chain is called!" print $ length $ traceId' [1,2,3] 的一般版本(我称之为traceId)不在stdlib中。