gpt4 book ai didi

functional-programming - 如何在标准 ML 中打印多态值?

转载 作者:行者123 更新时间:2023-12-04 14:37:20 25 4
gpt4 key购买 nike

有没有办法在标准 ML(特别是 SML/NJ)中打印多态值?我有一个多态函数没有做我想做的事,并且由于在 SML 中调试的状态非常糟糕(见 Any real world experience debugging a production functional program?),我想看看它在做什么用一些好东西'print的。一个简单的例子是(在提示下):

fun justThisOnce(x : 'a) : 'a = (print(x); x);
justThisOnce(42);

其他建议表示赞赏。与此同时,我将继续盯着有问题的代码提交。

更新

我能够找到错误,但问题仍然存在,希望能防止 future 的痛苦和痛苦。

最佳答案

不,没有办法打印多态值。
你有两个选择:

  • 将您的函数专门用于易于打印的整数或字符串。然后当 bug 被杀死时,再次使其多态。
  • 如果错误仅在其他一些实例化时出现,请传递 show作为函数的附加参数。例如,如果您的多态函数具有类型
    'a list -> 'a list

    你将类型扩展到
    ('a -> string) -> 'a list -> 'a list

    您使用 show内部打印,然后将函数部分应用到合适的 show ,您可以获得可以在原始上下文中使用的版本。

    这很乏味,但确实有帮助。 (但请注意:它可能会驱使您尝试 Haskell。)
  • 关于functional-programming - 如何在标准 ML 中打印多态值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/695807/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com