In the second version, you declare the primary curries constructor for Clazz. Thus, the difference between the two versions is the same as the difference between the "normal" and curry functions in Scala, i.e.
def foo(param1: String, param2: Int) def foo(param1: String)(param2: Int)
In most cases, both declarations can be used interchangeably, but if you often have to perform the curry function, then it makes sense to declare it in curry. Note that you can also convert a normal function or even a constructor to curry, for example, you can convert your regular Clazz constructor to curry using this:
(new Clazz(_, _)).curried
You also need several parameter lists if you pass an implicit value (since the implicit keyword applies to the complete parameter list)
source share