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)