OCaml: Использование оператора сравнения, переданного в функцию

Я новичок из OCaml. Я пытаюсь понять, как обрабатывать оператор сравнения, переданный в функцию.

Моя функция просто пытается передать оператор сравнения (=, <,> и т. Д.) И int.

let myFunction comparison x = 
if (x (comparison) 10) then 
   10
else
   x;;

Я надеялся, что результат этого кода будет равен (если бы был передан "="):

if (x = 10) then
   10
else
   x;;

Однако это не работает. В частности, он считает, что x является логическим значением, о чем свидетельствует это сообщение об ошибке:

This expression has type 'a -> int -> bool
but an expression was expected of type int

Как я могу делать то, что пытаюсь сделать?

Что касается побочного вопроса, как я мог понять это самостоятельно, чтобы не полагаться на помощь извне с форума? Какие хорошие ресурсы доступны?

5
задан Casey Patton 26 September 2011 в 02:44
поделиться