OCaml:使用传递给函数的比较运算符

Cas*_*ton 5 ocaml functional-programming function comparator

我是OCaml菜鸟.我试图弄清楚如何处理传递给函数的比较运算符.

我的函数只是尝试传入一个比较运算符(=,<,>等)和一个int.

let myFunction comparison x = 
if (x (comparison) 10) then 
   10
else
   x;;
Run Code Online (Sandbox Code Playgroud)

我希望这段代码能够评估(如果传入"="):

if (x = 10) then
   10
else
   x;;
Run Code Online (Sandbox Code Playgroud)

但是,这不起作用.特别是,它认为x是一个bool,如此错误消息所示:

This expression has type 'a -> int -> bool
but an expression was expected of type int
Run Code Online (Sandbox Code Playgroud)

我怎么能做我想做的事情?

在一个附带问题上,我怎么能自己解决这个问题所以我不必依赖论坛的外界帮助?有哪些好的资源?

pho*_*oji 10

比较运算符喜欢<并且=是秘密的双参数(二进制)函数.要将它们作为参数传递,请使用(<)表示法.要在函数中使用该参数,只需将其视为函数名称:

let myFunction comp x = 
  if comp x 10 then 
     10
  else
     x;;

printf "%d" (myFunction (<) 5);; (* prints 10 *)
Run Code Online (Sandbox Code Playgroud)