Skip to content

Commit ff6943e

Browse files
authored
Merge pull request #21 from typelevel/bugfix/19
Fixes #19
2 parents e1002ff + c4f1f58 commit ff6943e

File tree

3 files changed

+6
-4
lines changed

3 files changed

+6
-4
lines changed

build.sbt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import com.typesafe.tools.mima.core._
22

33
Global / onChangedBuildSource := ReloadOnSourceChanges
44

5-
ThisBuild / tlBaseVersion := "0.7"
5+
ThisBuild / tlBaseVersion := "0.8"
66

77
ThisBuild / organization := "org.typelevel"
88
ThisBuild / organizationName := "Typelevel"

core/shared/src/main/scala-3/org/typelevel/twiddles/Twiddles.scala

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,7 @@ trait TwiddleSyntax[F[_]]:
4040
)
4141
implicit def toTwiddleOpTwo[B](fb: F[B]): TwiddleOpTwo[F, B] = new TwiddleOpTwo(fb)
4242

43-
extension [A](fa: F[A])
44-
// TODO: Define *: here instead of with toTwiddleOpCons/Two methods above; doing so breaks a bunch of tests though
45-
def to[B](using iso: Iso[A, B], F: Invariant[F]): F[B] = fa.imap(iso.to)(iso.from)
43+
implicit def toTwiddleOpTo[A](fa: F[A]): TwiddleOpTo[F, A] = new TwiddleOpTo(fa)
4644

4745
extension [A <: Tuple](fa: F[A])
4846
inline def dropUnits(using Invariant[F]): F[DropUnits[A]] =
@@ -88,3 +86,6 @@ final class TwiddleOpTwo[F[_], B](private val self: F[B]) extends AnyVal:
8886
ga.product(self).imap[A *: B *: EmptyTuple] { case (a, b) => a *: b *: EmptyTuple } {
8987
case a *: b *: EmptyTuple => (a, b)
9088
}
89+
90+
final class TwiddleOpTo[F[_], A](private val self: F[A]) extends AnyVal:
91+
def to[B](implicit iso: Iso[A, B], F: Invariant[F]): F[B] = self.imap(iso.to)(iso.from)

core/shared/src/test/scala/examples/Hierarchy.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,4 +66,5 @@ object Hierarchy {
6666
def g: Encoder[Foo] = ((int: Encoder[Int]) *: string *: bool).to[Foo]
6767
def h = (int *: string) *: bool
6868
def i = (int *: string *: bool) *: bool *: bool
69+
def j: Codec[Foo] = (int *: string *: bool).to
6970
}

0 commit comments

Comments
 (0)