package pack1; interface Eff<A, B> { B f(A a); } abstract class POne<A> { abstract A _1(); static <A> POne<Hooray<A>> sequence(final Hooray<POne<A>> as) { return new POne<Hooray<A>>() { public Hooray<A> _1() { return as.map(POne.<A>__1()); } }; } static <A> Eff<POne<A>, A> __1() { return POne::_1; } } final class Hooray<A> { public <B> Hooray<B> map(final Eff<A, B> f) { return null; } }