Модульное тестирование на uncurry в ocaml
моя реализация пока что я не могу понять, в чем проблема
let uncurry_test1 _test_ctxt =
assert_equal
uncurry f (4 3)
7
1 ответ
The
assert_equal
функция из библиотеки OUnit2 имеет тип,
val assert_equal :
?ctxt:test_ctxt ->
?cmp:('a -> 'a -> bool) ->
?printer:('a -> string) ->
?pp_diff:(Format.formatter -> ('a * 'a) -> unit) ->
?msg:string -> 'a -> 'a -> unit
Параметров, не являющихся ключевыми словами, всего два, но вы применяете их к четырем. Я бы посоветовал вам прочитать хотя бы учебник по OCaml и узнать, как в OCaml применяются функции. Например, кусок кода
(4 3)
в OCaml означает применить к , где «применить F к Y» означает вызвать функцию F с аргументом X. Очевидно, что это не функция (спойлер, это число), поэтому этот код не имеет смысла и вызывает ошибку типа .
Из предоставленной вами информации трудно догадаться, что это за тип
uncurry
и что это за тип , но, вероятно, вы имели в виду что-то вроде этого,
assert_equal 7 (uncurry f 4 3)
Который говорит, что мы ожидаем
7
когда мы отключаем функцию и применяем ее к
4
а также
3
.
куда
f
возможно
curry (+)