我正在尝试第5课第6课中的代码示例 Try Ocaml tutorial
我们应该修复此代码示例:
let one =
let accum = ref -54 in
for i = 1 to ten do accum := !accum + i done ;
!accum
这是我的尝试:
let one =
let accum = ref -54 in (
for i = 1 to 10 do
accum := accum + i
done
;
!accum
)
但遗憾的是我收到了错误消息:
第2行,字符14-17:错误:此表达式的类型为'a - > '参考 但是期望表达式为int
答案 0 :(得分:2)
你在val counter =
MetricsStatsReceiver.defaultRegistry.createCounter("requests_counter")
周围缺少括号。
-54
let one =
let accum = ref (-54) in
for i=1 to 10 do
accum := !accum + i
done;
!accum
;;
是一个类型为ref
的函数,减号运算符'a -> 'a ref
的类型为(-)
。在这里,int -> int -> int
是54
,但int
不是,因此是类型错误消息。
答案 1 :(得分:0)
ocaml的词法分析器的一个奇怪之处是-54
对应于两个标记。
因此,您的代码对应于
let accum = ref (-) 54 in
产生上述类型错误。解决方案是添加括号并写入(-54)
。