-1

到目前为止,我的实施我似乎无法理解问题出在哪里

let uncurry_test1 _test_ctxt =
    assert_equal
    uncurry  f  (4 3)
    7
    
4

1 回答 1

0

assert_equalOUnit2 库中的函数具有类型,

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 中的一段代码表示 apply 4to 3,其中“将 F 应用于 Y”表示使用参数 X 调用函数 F。显然,4它不是一个函数(剧透,它是一个数字),所以这段代码没有有意义并引发类型错误。

很难从您提供的信息中猜出什么是类型uncurry和类型f,但可能您的意思是这样的,

assert_equal 7 (uncurry f 4 3)

这就是说,7当我们取消函数f并将其应用于4and时,我们期望3

f大概在哪里curry (+)

于 2021-11-19T16:17:08.493 回答