有没有办法在Standard ML(特别是SML/NJ)中打印多态值?我有一个多态函数,它没有做我想要的,并且由于在SML中调试的糟糕状态(参见调试生产函数程序的任何实际经验?),我想看看它在做什么好事 -噢print
.一个简单的例子是(提示):
fun justThisOnce(x : 'a) : 'a = (print(x); x); justThisOnce(42);
其他建议表示赞赏.与此同时,我会一直盯着提交的违规代码.
我能够找到这个错误,但问题仍然是希望防止未来的痛苦和痛苦.
不,没有办法打印多态值.你有两个选择:
将您的函数专门用于整数或字符串,这些整数或字符串很容易打印.然后当虫子被杀时,再次使它变成多态.
如果错误仅在其他实例化中显示,则show
作为函数的附加参数传递.例如,如果您的多态函数具有类型
'a list -> 'a list
你将类型扩展为
('a -> string) -> 'a list -> 'a list
您可以在show
内部使用打印,然后通过将该功能部分应用到合适的位置show
,您可以获得可在原始上下文中使用的版本.
这很乏味但确实有帮助.(但要注意:它可能会让你尝试Haskell.)