gpt4 book ai didi

sml - 如何在 SML 中的 case 语句中打印?

转载 作者:行者123 更新时间:2023-12-04 01:43:39 24 4
gpt4 key购买 nike

我刚开始使用 SML,我正在尝试修改一些代码,以便我了解它在做什么(我找不到合适的 SML/NJ 调试器,但这是一个单独的问题)。

fun type_check e theta env non_gens = 
case e of
constant_int _ => (integer,theta)
|
constant_bool _ => (boolean,theta)
| ...

假设这是有效的代码,因为 constant_int 是已经声明的数据类型的一部分,等等。我如何添加一个打印语句来对案例说“返回“整数”?我试过:
...
constant_int _ => (print "returning integer") (integer,theta)
...

但我得到:

stdIn:167.22-167.65 错误:运算符不是函数 [tycon mismatch]
运营商:单位
在表达上:
(打印“返回整数”)(整数,θ)

我想我只是不明白如何执行一系列语句,只有最后一个应该被视为返回值。有什么建议吗?

另外,我将如何打印我自己的数据类型值?当我尝试将数据类型值传递给 print() 时,SML 不喜欢,所以我可能必须为每个数据类型创建一个新的打印函数,对吗?

最佳答案

您可以使用分号“执行一系列语句,仅将最后一个语句视为返回值”。

...
constant_int _ => ( print "returning integer"; (integer,theta) )
...

在这种情况下,我们需要将语句序列包裹在括号中,因为分号的优先级低于 case-expression,所以如果我们没有括号,它会认为 case-expression 以分号结尾,并且整个 case-expression 是序列的一部分,在这种情况下这不是您想要的。

关于sml - 如何在 SML 中的 case 语句中打印?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/742363/

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