gpt4 book ai didi

functional-programming - SML/NJ 中的环路

转载 作者:行者123 更新时间:2023-12-02 17:48:49 28 4
gpt4 key购买 nike

我对 SNL/NJ 很陌生,想知道如何实现以下目标:

foo(stuff,counter)
{
while(counter > 0)
{
bar(stuff);
counter-1;
}
return;
}

类似这样的东西,但我该如何递减?:

foo(stuff,counter) = 
while counter > 0 do bar(stuff) ??? // how do I decrement counter here?

最佳答案

我同意其他贡献者的观点,即您通常应该使用递归而不是循环和突变来用函数式语言来完成此操作。

如果您确实想使用突变和循环,则需要使用称为引用的数据结构,它是一种“可变单元”。您可以使用 ref 函数分配引用,并向其传递初始内容。您可以使用 ! 运算符访问内容。然后您可以使用 := 运算符设置新内容。因此,上面代码的字面翻译将类似于以下内容。正如您所看到的,语法确实很难看,这也是人们避免使用它的另一个原因。

fun foo (stuff, counter_start) =
let
val counter = ref counter_start
in
while !counter > 0 do (
bar stuff;
counter := !counter - 1
)
end;

关于functional-programming - SML/NJ 中的环路,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/818324/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com