'Using K0.ProductInstances in shapeless3

I have a library with typeclasses that I am migrating to Scala 3 using shapeless-3. One of my typeclasses is:

trait Parser[T] {

  def parse(ctx: Context): (Option[T], Context)

}

where Option[T] represents an optionally parsed T and Context wraps the parsing state (e.g. index in a string)

I define some givens for primitive and basic types and eventually have to define a defaultGen for products:

given defaultGen[T](using inst: K0.ProductInstances[Parser, T]): Parser[T] with
  def parse(ctx: Context) = ???

What should I replace ??? with? I tried inst.construct, inst.map but I am unable to make it work without having the compiler complaining with errors such as:

[error] 399 |    def parse(ctx: Context) = inst.construct([t] => (p: Parser[t]) => p.parse(ctx))
[error]     |                                                                                  ^
[error]     |   Found:    [t] => (sweet.delights.parsing.Parser[t]) => (Option[t],
[error]     |     sweet.delights.parsing.Context
[error]     |   )
[error]     |   Required: [t] => (sweet.delights.parsing.Parser[t²]) => t²
[error]     |
[error]     |   where:    t  is a type variable
[error]     |             t² is a type variable with constraint


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source