Skip to content

[Scala 3] Derivation for deeply nested types #473

@TimWSpence

Description

@TimWSpence

In scala 2, the following is ok:

import auto.semigroupK._
implicitly[SemigroupK[Lambda[x => List[Set[Option[x]]]]]]

but the following in scala 3 does not compile:

import auto.semigroupK.given
summon[SemigroupK[[x] =>> List[Set[Option[x]]]]]

Naming and explicitly calling

given foo[F[_], G[_]](using F: Or[F]): DerivedSemigroupK[[x] =>> F[G[x]]] =
  F.unify.compose[G]

foo[List, [x] =>> Set[Option[x]]]

does work however.

I see the scala 2 version uses Split1 from Shapeless. Maybe we need something similar here?

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions