У меня есть следующий код F #
let Operation (l:int list) =
let A,B = l.[0], l.[1]
if A > B then (-)
else if A%2=0 && B%2=0 then (*)
else (-)
let m =
function
| [] -> []
| x::rest -> rest
let rec ops (l:int list) (opList:int->int->int list) =
let operation = Operation l
if l.Length = 0 then opList
else ops (m l) (operation::opList)
Компилятор жалуется на последнюю строку, говоря:
Ожидается, что это выражение будет иметь тип 'int -> int -> int list'но здесь имеет тип' 'список'
Он лежит в основе (operation::opList)
, но операция имеет тип int -> int -> int
, а opList имеет тип int->int->int list
.Что я тут не так делаю?