public static void Main()
public interface Semigroup<T>
Semigroup<T> Concat(Semigroup<T> other);
public class A : Semigroup<B>
public Semigroup<B> Concat(Semigroup<B> other)
throw new NotImplementedException();
public class B : Semigroup<A>
public Semigroup<A> Concat(Semigroup<A> other)
throw new NotImplementedException();
public interface Semigroup0
Semigroup0 Concat(Semigroup0 other);
public class A0 : Semigroup0
public Semigroup0 Concat(Semigroup0 other)
throw new NotImplementedException();
public class B0 : Semigroup0
public Semigroup0 Concat(Semigroup0 other)
throw new NotImplementedException();