这个定义的函数有什么问题?

问题描述 投票:-8回答:1

任何人都可以帮忙吗?它发布了一个错误

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;
sml
1个回答
2
投票

letin之间只能出现声明。 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似乎未被使用。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.