Модульное тестирование на 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 (+)

Другие вопросы по тегам