尝试平均变量的语法错误
Syntax error trying to average variables
我刚开始尝试学习 OCaml。我写了一个函数来获取两个浮点数和 return 它们的平均值,但是我遇到了语法错误。
let average a b =
(a +. b) /. 2.0;;
print_float (average 5.0 -5.0);;
声明的错误是
This expression has type float -> float but an expression was expected of type int.
还有下划线"average 5.0"。 OCaml 是 4.01.0 版本,系统是 ubuntu 14.10.
我只是在这里尝试一下。通过查看您的代码并在在线编译器上进行尝试,我得到了以下结果。
# let average a b =
# (a +. b) /. 2.0;;
val average : float -> float -> float = <fun>
# average 5.0 6.0;;
- : float = 5.5
# average 5.0 -6.0;;
File "", line 1, characters 0-11:
Error: This expression has type float -> float
but an expression was expected of type int
#
当其中一个值是负浮点数时抛出错误。请往那个方向检查。
如果你想避免额外的括号,你可以使用一元浮动否定运算符~-.
$ ocaml
OCaml version 4.01.0
# let average a b =
(a +. b) /. 2.0;;
val average : float -> float -> float = <fun>
# print_float (average 5.0 ~-. 5.0);;
0.- : unit = ()
#
但是,这个运算符看起来很笨拙,我从未在实际代码中见过它。所以有时你需要使用带负数的括号。
我做了一些阅读和实验,并写下了所有减法和求反运算符的描述:Unary minus and floating point number in OCaml
我刚开始尝试学习 OCaml。我写了一个函数来获取两个浮点数和 return 它们的平均值,但是我遇到了语法错误。
let average a b =
(a +. b) /. 2.0;;
print_float (average 5.0 -5.0);;
声明的错误是
This expression has type float -> float but an expression was expected of type int.
还有下划线"average 5.0"。 OCaml 是 4.01.0 版本,系统是 ubuntu 14.10.
我只是在这里尝试一下。通过查看您的代码并在在线编译器上进行尝试,我得到了以下结果。
# let average a b =
# (a +. b) /. 2.0;;
val average : float -> float -> float = <fun>
# average 5.0 6.0;;
- : float = 5.5
# average 5.0 -6.0;;
File "", line 1, characters 0-11:
Error: This expression has type float -> float
but an expression was expected of type int
#
当其中一个值是负浮点数时抛出错误。请往那个方向检查。
如果你想避免额外的括号,你可以使用一元浮动否定运算符~-.
$ ocaml
OCaml version 4.01.0
# let average a b =
(a +. b) /. 2.0;;
val average : float -> float -> float = <fun>
# print_float (average 5.0 ~-. 5.0);;
0.- : unit = ()
#
但是,这个运算符看起来很笨拙,我从未在实际代码中见过它。所以有时你需要使用带负数的括号。
我做了一些阅读和实验,并写下了所有减法和求反运算符的描述:Unary minus and floating point number in OCaml