没有使用引用计数的ocaml循环计数?

时间:2013-01-10 20:31:28

标签: ocaml

我使用ref计数来计算函数执行的次数,但是如果我想摆脱参考的话呢?我是ocaml的noobie,请给我一些建议,这是我得到的:

let count =ref 0;;  
let rec addtive n=
if n<9 then count 
else(
     incr count;
     addtive(sum(digit(n)))
) ;;

# a 551515;;
- : int ref = {contents = 2}

但我希望得到像

-: int = 2

2 个答案:

答案 0 :(得分:3)

只需在!子句中添加then即可从ref中提取值:

let count =ref 0;;   
let rec addtive n= 
  if n<9 then !count
  else(
    incr count;
    addtive(sum(digit(n)))  
  ) ;;

答案 1 :(得分:0)

您应该将计数作为第二个参数传递(必要时定义辅助方法):

let additive n =
  let rec helper n count =
    if n<9 then count
    else helper (sum (digit n)) (count + 1)
  in
  helper n 0