【问题标题】:What is causing this type error in OCaml?是什么导致 OCaml 中出现这种类型错误?
【发布时间】:2015-09-14 10:21:45
【问题描述】:
type expr = NUM of int
        | PLUS of expr * expr
        | MINUS of expr * expr

let rec calc expr1 =
        match expr1 with
        | NUM i -> NUM i
        | PLUS (lexpr1, rexpr1) ->
                (match lexpr1, rexpr1 with
                | (*(NUM li1,NUM ri1) -> NUM li1+ri1*)
                | (lexpr1', rexpr1') -> PLUS (calc lexpr1', calc rexpr1'))

上面写着

错误:此表达式的类型为 expr,但预期的表达式为 int 类型

我不知道为什么错误不断出现

【问题讨论】:

    标签: ocaml


    【解决方案1】:

    Ocaml 在行

    NUM li1+ri1
    

    首先创建一个 NUM,然后尝试添加 ri1。但由于+ 运算符仅适用于ints 而不适用于exprint,因此会引发错误。

    要解决这个问题,请先添加整数:

    NUM (li1+ri1)
    

    【讨论】:

      猜你喜欢
      • 2016-06-17
      • 2011-02-26
      • 1970-01-01
      • 1970-01-01
      • 2012-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多