任何人都可以帮忙吗? 它会发布错误
fun hypoexpo(l1:real,l2:real)=
let
val u1=uniform(0.0,1.0)
val u2=uniform(0.0,1.0)
val l=l1/(l2-l1)
if u1<0.5 then val h=~ln u2/l1
else val h=~ln u2/l2
in
h
end;
答案 0 :(得分:2)
let
和in
之间只能出现声明。 if
构造不是声明语法的一部分,它是一个表达式。您只需将代码更改为以下内容即可:
fun hypoexpo(l1 : real, l2 : real) =
let
val u1 = uniform(0.0, 1.0)
val u2 = uniform(0.0, 1.0)
val l = l1/(l2-l1)
in
if u1 < 0.5 then ~ln u2/l1 else ~ln u2/l2
end
您还可以从条件中排除常量部分,将最后一行更改为
~ln u2 / (if u1 < 0.5 then l1 else l2)
无论哪种方式,l
似乎都未被使用。