Ocaml - 2 FOR循环

时间:2018-05-21 19:32:01

标签: ocaml

我想弄清楚ocaml是如何工作的。例如8皇后问题。我需要创建一个函数T(int * int)array - >如果该位置受到其他女王的攻击,则返回true。例如,输入一个数组:

T[|(1,2);(4,3);(5,6);(2,7);(3,6);(2,8);(1,4);(2,2)|] (numbers represent vertical and horizontal positions:

返回

bool array =[|false,true,true,false.....] 

我没有检查,但我希望你明白这一点并熟悉这个问题。 我尝试用2个FOR循环解决这个问题,但返回值让我感到困惑。 ocaml的工作方式不同吗?

1 个答案:

答案 0 :(得分:0)

OCaml是一种非常常见且普通的编程语言,与其他流行的编译语言(包括C,Pascal或Basic)的工作方式相同。更正式地说,它是一种严格的(即,具有正常评估策略)语言,完全支持命令式程序范式。它使用C运行时和用OCaml编写的程序直接在CPU上运行。

OCaml“如何工作”,即OCaml手册明确定义了不同语言结构的含义。建议您在插入计算机并在OCaml中开始编码之前阅读它:)例如,这是OCaml manual的摘录,描述了for循环的工作原理:

  

表达式for name = expr1 to expr2 do expr3 done首先将表达式expr1expr2(边界)计算为整数值n和p。然后,在name连续地绑定到值n,n + 1,...,p-1,p的环境中重复评估循环体expr3。如果n> 1,则永远不评估循环体。第

     

表达式for name = expr1 downto expr2 do expr3 done的计算方式类似,只是name连续绑定到值n,n-1,...,p + 1,p。如果n      

在这两种情况下,整个表达式的计算结果为单位值()

所以不要试图改变对语言的责备:)这是完全正常的,这里没什么惊喜。专注于您的代码,以及您对问题的理解。