【发布时间】:2018-08-16 09:39:40
【问题描述】:
我在网上遇到了这个我觉得很有趣的问题,它有一个不错的解释,但我对解决方案感到困惑。所以给定
type 'a fenv = name -> 'a
创建一个类型的值
'a fenv
这将是我们的空环境。我认为这是以下内容
exception NotFound of name
val empty = fn name => raise NotFound name
它可能会返回 Notfound 名称异常,但我可能做错了,因为我继续得到 p>
Type clash: expression of type
'a alist -> 'a alist alist
cannot have type
'a alist alist
Toplevel input:
val (_: 'a fenv) = empty
Unbound type constructor: fenv
对不起,如果这在 sml 中仍然很简单,有人可以解释一下我将如何获得解决方案吗?
谢谢
【问题讨论】:
-
如果您发布实际代码而不是“...”,您将获得更好的帮助。
empty的简单实现应该可以工作。你可能想多了,或者使用它的代码有问题。 -
我的错它被编辑了
-
看起来问题出在其他地方。编译器应该告诉你有问题的表达式在哪里。 (我怀疑你忘记在某处应用函数。)
-
在尝试使用以下 val _ 进行另一种测试后,我更新了错误消息:'a fenv = fenvEmpty.所以我调用异常没有错?
-
那是书中写的测试用例,所以我认为它是正确的。仔细检查道歉,但它是 val (_: 'a fenv) = empty