如何解决Ocaml 中的增量
我开始学习 Ocaml 代码,在这个练习中需要计算每个函数 pasA 和 pasB 将执行多少操作,然后我尝试在每个函数中植入一个计数器,所以我发现了一些问题正确制作,代码仍然存在一些问题,这就是为什么我会提供一些帮助,提前谢谢您。
let i= ref 0
let incr()=
i:=!i+1;;
let rec pasA n =
if n=0 then 0 else pasA (n-1) ;
incr();;
and pasB n =
if n=0 then 0
else if (n mod 2)=0 then pasA (n-2)
else pasA (n-1) ;
incr() ;;
解决方法
假设你改变了这个函数:
let myfun x =
x + 1
进入这个函数:
let myfun x =
x + 1;
incr ()
该函数的第一个版本返回一个 int 值。第二个返回 ()
,称为“单位”。换句话说,您已经完全改变了功能。
这只是指出您不能只在函数末尾添加 incr ()
的一个很长的路要走。您需要确保该函数继续返回所需的结果。
您还应该意识到 ;;
并不是 OCaml 语言的真正组成部分(至少在大多数人看来是这样)。这是您在 REPL 中输入的内容,以使其评估您迄今为止输入的内容。
如果您从代码中删除所有 ;;
标记,您可能会避免一些其他问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。