blob: 1f12764dd19a6e9579338c1d475dc763510df428 (
plain) (
tree)
|
|
trait CrashDueToTypeError {
def id[a](x :a) :a = x
trait Bifunctor {
type a; // content
type s <: Bifunctor
// uncomment this-vvvvvvvvvvvvvvvvvvvvvvvvvvvv, and it compiles
def bimap[c](f :a=>c) :s{/*type s=Bifunctor.this.s;*/type a=c; }
}
def hylo[hs <: Bifunctor,ha,hb,hc]
(f :hb=>hs{type s=hs; type a=ha},
g :hs{type s=hs; type a=ha}=>hc)(x :hb)
:hc
= g(f(x).bimap(id))
}
|