【问题标题】:Type-safe printf类型安全的 printf
【发布时间】:2012-12-20 00:51:20
【问题描述】:

标准库提供了一个printf 函数,它设法成为可变参数。然而,它没有做的是编译时检查参数类型是否与格式字符串匹配。这将需要依赖类型,而且听起来也很难实现! (您必须使用类型签名来解析整个格式字符串……哎呀!)

但仔细想想,现在我想知道......我们可以用 Template Haskell 做到这一点吗?事实上,有没有人为此编写了一个库??

(看起来你可以很容易地编写一个准引用器来读取 printf 格式规范并生成必要的 N-arg 函数......)

【问题讨论】:

    标签: string haskell types


    【解决方案1】:

    如果您愿意接受“格式字符串”不是真正的字符串,那么您也可以直接在 Haskell 中实现类似 printf 的函数。

    这已经被描述,例如,在 Ralf Hinze 的一篇名为“Formatting: a class act”的论文中。在 Hackage 上,我只能找到实现类似这种方法的 xformat 包。

    【讨论】:

      【解决方案2】:

      除了Printf-THprintf-mauke 似乎也有一些 TH 作为事后的想法......还有其他例子吗?

      【讨论】:

        【解决方案3】:

        是的,这是可能的。是的,已经完成了。你真的应该检查这种问题的hackage:http://hackage.haskell.org/package/Printf-TH

        【讨论】:

        • 有趣。我现在正在查看 Hackage,但我没有看到……哦等等,它不在 Text 下,它在 Utils 下。哇,看看它拥有的所有文档...... :-(
        • @MathematicalOrchid 我刚刚检查了源代码,似乎没有使用黑线鳕标记记录该文件。奇怪的是没有人维护那个包......
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-10-26
        • 1970-01-01
        • 1970-01-01
        • 2018-10-06
        • 1970-01-01
        • 2012-10-31
        • 2020-04-29
        相关资源
        最近更新 更多