blob: 34dc4c03525d1359b626b47661768c09af18b895 (
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))
}
|