【发布时间】:2018-01-25 21:40:47
【问题描述】:
我愿意使用 fast-logger haskell 库,但我有一些问题:
函数newTimedFastLogger解释为:
使用附加到每条消息的时间戳初始化 FastLogger。返回一个记录器和清理操作的元组。
那么,第一个问题,这个“清理行动”是为了什么?
此外,该函数将IO FormattedTime 作为第一个参数,但是我们有:
type TimedFastLogger = (FormattedTime -> LogStr) -> IO ()
这是我的第二个问题,为什么我在创建 TimedFastLogger 和使用它时都必须提供 FormattedTime?
【问题讨论】:
-
您误解了
(A -> B) -> IO ()类型的含义。这不需要A类型的值;它需要A -> B类型的值。通过提供A -> B类型的函数,您可以访问A类型的值,但只能在该函数的范围内。换句话说,TimedFastLogger为您提供了FormattedTime,而不是相反。 -
我真的不明白为什么
TimedFastLogger会这样定义 -
您希望如何定义它?或者您认为实际定义有什么问题?对我来说,这似乎是一种很自然的定义方式。