Function 为什么ocaml忽略了一个函数,而忽略了所有其他函数?

Function 为什么ocaml忽略了一个函数,而忽略了所有其他函数?,function,ocaml,Function,Ocaml,所以我有这个密码,它应该给我一个肯定或否定的答案。它没有给我任何错误,但它似乎没有进入我的rec func函数,这使得它给出了错误的答案。非常感谢你的帮助 let n = read_int() let () = let valor = ref true in let i = ref 1 in let a = ref 0 in let b = ref 0 in let c = ref 0 in

所以我有这个密码,它应该给我一个肯定或否定的答案。它没有给我任何错误,但它似乎没有进入我的rec func函数,这使得它给出了错误的答案。非常感谢你的帮助

let n = read_int()

let () = 
         let valor = ref true in
         let i = ref 1 in
         let a = ref 0 in
         let b = ref 0 in
         let c = ref 0 in
         let e = ref 1 in (* 1 = variavel 0 = conetor*)

         let rec func() = 
             i:=!i+1;
             let () = Printf.printf "i" in
             let r = read_line() in 
             if r="(" then a:=!a+1;
             if r=")" then b:=!b+1;
             if (r=")" && !e=1) then valor:=false;
             if (r="(" && !e=0) then valor:=false;
             if !b > !a then valor:=false;
             if ((r="&" || r="|" || r="->" || r="<->")&&(!c>0 || !e=1)) then valor:=false;
             if (r="&" || r="|" || r="->" || r="<->") then e:=1;
             if r="!" then c:=!c+1;
             if (r<>"!" && r<>"(" && r<>")" && r<>"&" && r<>"|" && r<>"->" && r<>"<->" && !e=0) then valor:=false;
             if (r<>"!" && r<>"(" && r<>")" && r<>"&" && r<>"|" && r<>"->" && r<>"<->") then e:=0;
             if (r<>"!" && r<>"(" && r<>")" && r<>"&" && r<>"|" && r<>"->" && r<>"<->" && !c>0) then c:=0;
             if !i = n-1 then () else func() 
             in 
         if !e=1 then valor:=false;
         if !c>0 then valor:=false;
         if !a <> !b then valor:=false;
         let msg = if !valor then "YES" else "NO" in
         Printf.printf "%s \n" msg   
let n=read_int()
让()=
让valor=ref为真
设i=ref 1 in
设a=ref 0 in
设b=ref0 in
设c=ref0 in
设e=ref 1 in(*1=variavel 0=conetor*)
设rec func()=
我:=!i+1;
让()=Printf.Printf“i”在
设r=读入
如果r=“”(“那么a:=!a+1;
如果r=“)”则b:=!b+1;
如果(r=“)”&&!e=1)那么valor:=false;
如果(r=“(”&&&!e=0),则valor:=false;
如果!b>!a那么valor:=false;
如果((r=“&”| | r=“|”| r=“->”| | r=“”)&(!c>0 | | e=1))则valor:=假;
如果(r=“&”|| r=“|”| r=“->”| r=“”),则e:=1;
如果r=“!”则c:=!c+1;
如果(r”!“&&r”(“&&r”)“&&r”&&r“|”&&r“->”&&r“&&r”&&r”&&e=0,则valor:=false;
如果(r)!“&&r”(“&&r”)“&&r”&&r“|”&&r“->”&&r“),则e:=0;
如果(r)!“&&r”(“&&r”)“&&r”&&r“|”&&r“->”&&r“&&r”&&r”&&c>0),则c:=0;
如果!i=n-1,则()else func()
在里面
如果!e=1,则valor=false;
如果!c>0,则valor:=false;
如果!a!b那么valor:=false;
让msg=if!valor然后在
Printf.Printf“%s\n”消息

只需浏览一下代码,我就看到了名为
func
的函数的定义,但没有调用此函数(从函数内部调用除外)


我想说您需要实际调用
func
。这应该可以让您开始了。

只要浏览一下您的代码,我就看到了名为
func
的函数的定义,但没有对该函数的调用(从函数内部调用除外)


我想说的是,你需要实际调用
func
。这应该会让你开始。

请不要通过破坏你的帖子来为他人做更多的工作。通过在Stack Exchange(SE)网络上发布,你已经在a下授予了SE分发内容的不可撤销的权利(即,无论你未来的选择如何)。根据SE策略,非故意破坏的版本将被分发。因此,任何故意破坏行为都将被还原。请参阅:。如果允许删除,帖子下方左侧有一个“删除”按钮,但它仅在浏览器中,而不是在移动应用程序中。请不要通过故意破坏您的帖子来为其他人做更多工作。通过在堆栈交换(SE)上发布网络中,您已在a下授予SE分发内容的不可撤销权利(即,无论您未来的选择如何)。根据SE策略,非故意破坏版本将被分发。因此,任何故意破坏行为都将被恢复。请参阅:。如果允许删除,则会出现“删除”按钮,但它仅在浏览器中,而不是在移动应用程序中。