我听说show and read的使用是该计划的瓶颈。是否存在这样的函数,它不涉及字符串转换:
thow :: Num a => a -> Text
thow = undefined
一个明显的实现就像这个pack . show
,但不幸的是,它涉及字符串转换。有没有最佳方法来实现这一目标?
答案 0 :(得分:8)
查看text
包的文档,您可能希望使用Data.Text.Lazy.Builder.Int
中的函数,例如:
thow :: Integral a => a -> Text
thow = toLazyText . decimal
如果您查看该模块的代码,您会看到它有RULES
和SPECIALIZE
个pragma来优化它,如果a
是常见的整数类型之一。< / p>
答案 1 :(得分:3)
double-conversion包针对Float
和Double
执行此操作,并且经过高度优化。我怀疑你能否将它的性能与多态函数相匹配(尽管你总是可以专注于一个RULE)。