我如何在 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 上寻求帮助更有效率。
如果我执行此代码一切正常:
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 上寻求帮助更有效率。