我有以下类型值,我想根据这些类型进行计算,但我收到一条错误消息:
此表达式具有类型值,但表达式应为 int 类型
那么我应该怎么做计算呢?
type binop =
| Plus
| Minus
| Mul
| Div
| Eq
| Ne
| Lt
| Le
| And
| Or
| Cons
type expr =
| Const of int
| True
| False
| NilExpr
| Var of string
| Bin of expr * binop * expr
| If of expr * expr * expr
| Let of string * expr * expr
| App of expr * expr
| Fun of string * expr
| Letrec of string * expr * expr
type value =
| Int of int
| Bool of bool
| Closure of env * string option * string * expr
| Nil
| Pair of value * value
val x : value = Int 1
val x : value = Int 1
当我这样做时
x+x;;
然后它会抛出错误,我想要这样的东西:
Nano.value = Int 2
修复这样的东西,它会返回value = Int
一些东西,但我想要Nano.value = Int
一些东西,以及名为 Nano.ml 的文件,所以我想要Nano.value
let add (x,y) = match (x,y) with
| (Int xx, Int yy) -> Int (xx + yy)
| ( _ , _) -> Int 0