blob: 24f515651a23b91e062ef21d6ce08af6897de341 (
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))
}
|