在OCaml中定义函数内的变量

时间:2013-03-15 01:48:02

标签: function variables functional-programming ocaml

我有一个函数numofday,我想在另一个函数中应用两个变量,它们将返回两个给定日期之间的天数,函数本身并不重要,我想这更多一个句法问题,但谷歌没有产生太多。

我想做的事情就像(这是我尝试过的,显然不起作用)

let daysbetween day1 day2 =
 let x = numofday day1;
 let y = numofday day2;
 x-y;;

我尝试删除let,删除分号,并使用:=而不是=而我似乎无法让它工作。必须有一种方法来定义函数中的变量。提前谢谢。

2 个答案:

答案 0 :(得分:3)

ocaml的let绑定的正确语法是let name=bindng in expr 这是您的固定代码

let daysbetween day1 day2 =
  let x = numofday day1 in 
  let y = numofday day2 in
  x-y;;

您的特定示例甚至可以通过绑定元组来一次分配两个值:

let daysbetween day1 day2 =
  let (x,y) = (numofday day1, numofday day2) in
  x - y

答案 1 :(得分:2)

以rgrinberg的答案为基础:
OCaml中的单个分号与Java或C中的单个分号非常不同。

在您的情况下,您似乎将分号的功能解释为语句的结束标记 但是,分号用作表达式的分隔符。并且OCaml期望分号前的值为unit,()类型,副作用函数通常会返回。

表达式:

();();();.....();x;;

具有x的值。

如何使用呢?

let x = 1;;
let y = 
    print_string("assigning x to y\n");
    x;;