OCaml的。关于if声明

时间:2015-10-16 14:59:18

标签: if-statement boolean ocaml

我的代码中有错误。如何使用在if语句中返回bool的函数?

let pol a b c = 
    let p=(a+.b+.c)/.2.0 in sqrt(p*.(p-.a)*.(p-.b)*.(p-.c));;

let test a b c = 
    (a+.b)>c &&(b+.c)>a &&(a+.c)>b

let main a b c = 
    let w=test(a b c) in(
    if w
     then pol (a b c)
     else raise(Failure "Error"));;

1 个答案:

答案 0 :(得分:2)

据我所知,您的问题出在poltest的来电中。你已经定义了这两个函数,以便它们采用三个单独的参数,但是你传递的是一个表示奇怪函数调用的参数。

OCaml中的惯用函数调用没有括号:

# let f a b = a + b;;
val f : int -> int -> int = <fun>
# f 3 8;;
- : int = 11

你正试图做更像这样的事情:

# f (3 8);;
Error: This expression has type int
       This is not a function; it cannot be applied.

如您所见,如果您编写(3 8),则要求将3视为应将8作为参数传递的函数。您的代码中存在与(a b c)类似的问题。