sml错误插入等式

sml错误插入等式,sml,Sml,我正在使用emacs在sml中编写一个函数,当我试图编译这段代码时 fun tryDivide small n = if n = 1 then true else if ((small mod n) = 0) then tryDivide small (n-1) else false fun lcmHelper small div = if tryDivide (small div) = false then lcmHelper ((small+div) div) else small (*

我正在使用emacs在sml中编写一个函数,当我试图编译这段代码时

fun tryDivide small n =
if n = 1 then true
else if ((small mod n) = 0) then tryDivide small (n-1)
else false

fun lcmHelper small div =
if tryDivide (small div) = false then lcmHelper ((small+div) div)
else small

(*Start by calling this*)
fun lcm d = 
val small = d
lcmHelper (small d)
应该找到可以除以d的最小值(fun lcm d) 我很确定这个算法是有效的,但是有语法错误

在“fun lcm d=”的开头,我收到一个错误,上面写着“插入EQUALOP时出错”

你知道这是什么原因吗?
提前谢谢

它们有语法错误。这就解决了问题。让val=。。。在里面结束,不是瓦尔=…谢谢,是的,这解决了equalop的问题。不幸的是,似乎还有其他问题。现在它抱怨lcmHelper函数:“错误:子句的右侧与函数结果类型[tycon mismatch]表达式->->int result->intIt似乎lcmHelper有很多问题。
small+div
意味着small和div都是int(除非重载)。因此,表达式
(small div)
尝试将small应用于div。我首先要解决这个问题。在学习sml时编写类型通常很有帮助。例如,fun-lcmHelper(small:int)(dev:int):int=。。。
fun lcm d =
  let 
    val small = d 
  in
    lcmHelper (small d)
  end