SML:为什么返回类型是unit?
因此,我编写了一个函数(我将简要描述它以避免混淆)SML:为什么返回类型是unit?,sml,smlnj,Sml,Smlnj,因此,我编写了一个函数(我将简要描述它以避免混淆) 我没有得到返回类型。我想返回一个真正喜欢的d&k。为什么它是单位??请发布一篇文章。我能想到的在代码中填写…的所有方法要么会导致结果类型real,要么会导致类型错误。好吧,我更新了它。但是--你没有将其更新为。当我试图运行您发布的代码时,它会抛出几个关于未绑定变量的错误。在任何情况下--while循环的类型为单元。在SML中很少需要它。是的,虽然被设计为重复做一个动作,而不是计算一个值。它是SML命令式子语言的一部分。您给出的代码看起来更像Ja
我没有得到返回类型。我想返回一个真正喜欢的d&k。为什么它是单位??
请发布一篇文章。我能想到的在代码中填写…
的所有方法要么会导致结果类型real
,要么会导致类型错误。好吧,我更新了它。但是--你没有将其更新为。当我试图运行您发布的代码时,它会抛出几个关于未绑定变量的错误。在任何情况下--while
循环的类型为单元
。在SML中很少需要它。是的,虽然
被设计为重复做一个动作,而不是计算一个值。它是SML命令式子语言的一部分。您给出的代码看起来更像Java,而不是惯用的SML。您的函数试图计算什么?这可能有助于其他人就替代方法提出建议。
fun function1 (l, a1,a2, suma, b2, sumb, d) =
while(a1<a2 andalso k>d) do
let
val k = Real.fromInt(a2-a1)
val suma = suma - Real.fromInt(List.nth(l, a1))
val sumb = sumb - Real.fromInt(List.nth(l, b2))
val a1 = a1+1
val b2 = b2-1
in
if suma<0.0 andalso ( (~sumf)/(N*k) )>1.0 andalso k>d
then k
else if sumb<0.0 andalso ((~sumb)/(N*k))>1.0 andalso k>d
then k
else d
end;
val function1 = fn : int list * int * int * real * int * real * real -> unit