我如何在 OCaml 中翻译这个小 C 程序?

How can i traduce this little C program in OCaml?

如果我执行此代码一切正常:

word = "Hello World";;

number = 9 ;;

let main() =

    print_string word ;;
    print_int number ;;

main() ;; 

问题:我必须用 OCaml 为我的大学做一个游戏,它必须是模块化的,我做了一些函数,但现在我不知道如何同时调用它们,o 我如何做另一个调用所有这些函数,最后一个函数 return 无效。 下一个代码是我想做的,但我不能: - 我有一个导入模块 Player.ml 的模块 Main.ml, 在 Player.ml 中,我有下一个不起作用的代码:

let print word number = ()

        let fun() =
            print_int number ;;
            print_string word ;;

然后在 Main.ml 我有:

let main() =

      print "points player peter " 5 ;;

      print "points player mark" 7 ;;

main();;

所以我想在 ocaml 中做一些必要的事情,但我不知道如何.. 在 C 中我会做这样的事情:

Player.c

  void print(char *word, int number){

     fprintf(stdout,"%s", word);
     fprintf(stdout,"%d", number);
  }

Main.c

int main(void){

print("point player peter ", 5);

print("points player mark", 8);

return 0;

}

我的ocaml代码比较复杂,我有记录,递归函数等等。所以我真的需要将以前的C程序转换成Ocaml程序。我 我觉得我有问题.. 如果你能帮助我谢谢:)

你的 OCaml 代码有很多问题,但我认为最大的问题是你的函数 print 作为 OCaml 代码一点意义都没有。

首先,您可能应该像这样定义 print

 let print word number =
    print_string word;
    print_int number

现在您可以像这样从其他模块调用此函数:

Player.print "peter" 18

我还建议您减少在代码中使用 ;;。与显然流行的概念相反,在每一行 OCaml 代码之后都不需要 ;;。在我自己的源文件中根本没有 ;; 的出现。

你对 ;; 的大部分使用应该改为 ;

简而言之:;; 用于告诉顶层(REPL)评估您目前输入的内容。 ; 用于将两个表达式连接成一个表达式——通过忽略第一个表达式的值。这仅在命令式上下文中才真正有意义,其中第一个表达式的类型为 unit.

坦率地说,如果您能原谅我的话,学习 OCaml 教程可能比在您掌握一些基本知识之前在 Whosebug 上寻求帮助更有效率。