Skip to content

Instantly share code, notes, and snippets.

View d-plaindoux's full-sized avatar

Didier Plaindoux d-plaindoux

View GitHub Profile
@d-plaindoux
d-plaindoux / MonomorphicRegistry.scala
Last active December 19, 2024 11:02
Monomorphic function registry in Scala3 (thanks to @Ptival https://gist.github.com/Ptival/fbc92e38000f0771453bd2af571e1c1c example 🫶)
import :=:.Refl
import Type.*
import TypeRepr.*
import scala.annotation.tailrec
enum :=:[A, B]:
case Refl[E]() extends :=:[E, E]
enum Type:
@d-plaindoux
d-plaindoux / enum.scala
Last active January 8, 2025 21:54
Trying to mimic Idris Enum in scala3
import TList.{TCons, TNil}
import scala.annotation.targetName
enum TList[A]:
case TNil[A]() extends TList[A]
case TCons[A, X <: A, T <: TList[A]](x: X, t: T) extends TList[A]
sealed trait Elem[A, X, XS <: TList[A]]:
def get(l: XS): X