SML,未绑定的变量或构造函数

时间:2017-03-06 07:09:59

标签: sml

这是我的代码,它不断给我提供未绑定的错误消息。

我实际上是SML的新手。所以,我真的不知道如何解决它。

似乎使用a和b是件坏事。

我尝试声明ab

像这样

a : int;
b : int;

但仍然无法正常工作。

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

这只是一个语法问题。您遗失的所有代码都是|,用于分隔calculate的子句。只需在第5-8行的开头添加一个。

答案 1 :(得分:1)

除了Andreas提及的函数子句之间缺少|之外,您无法将+-*div运算符应用于值输入 calctree 。您需要先使用函数将每个ab减少为整数。例如,

datatype ops = PLUS | MINUS | TIMES | DIV
datatype calctree = LEAF of int | CALC of ops * calctree * calctree

fun getOp PLUS = op +
  | getOp MINUS = op -
  | getOp TIMES = op *
  | getOp DIV = op div

fun calc (LEAF x) = x
  | calc (CALC (oper, a, b)) = getOp oper (calc a, calc b)