错误:此表达式具有类型单元,但表达式需要类型为inst list

时间:2015-11-10 00:03:44

标签: ocaml

|ScmOp(g,h) ->newList := (createInstList **!newList** a currentReg);

这是我们的代码,我们在编译时收到了上述错误。该错误来自我们发送给递归函数的!newList 参数。 newList被定义为引用,因此我们发送!newList以传递其值。当删除!时,我们收到了一个错误,我们发送了一个ref for inst列表而不是一个inst列表(最终我们想发送一个inst列表!)。

1 个答案:

答案 0 :(得分:0)

好的,我认为问题是编译器认为createInstList返回单位。这是由于;的优先顺序,我认为。

在我看来,最后的!newlist应该是整个createInstList函数的结果。但我怀疑它被视为内在match的一部分。

你可以试试这个:

let rec createInstList instList expr currentReg =
    let newList = ref instList in
    (match
           ...
        done);
    !newList