diff --git a/forja/src/P.scala b/forja/src/P.scala new file mode 100644 index 0000000..6b7af53 --- /dev/null +++ b/forja/src/P.scala @@ -0,0 +1,20 @@ +package forja + +into opaque type P[T] = P.Erased + +object P: + trait Meta[T] + object Meta: + def derived[T]: Meta[T] = ??? + end Meta + + given [T] => (meta: Meta[T]) => Conversion[T, P[T]]: + def apply(x: T): Erased = ??? + end given + + trait Erased + + extension [T] (p: P[T]) + def fixpoint(fn: PartialFunction[T, T]): P[T] = ??? + end extension +end P