我有以下声明:dataTwoab=Twoabderiving(Eq,Show)instance(Semigroupa,Semigroupb)=>Semigroup(Twoab)where(Twoab)(Twocd)=Two(ac)(bd)并在前奏中尝试了它:*MainFirstLibMonoidLawsSemi>(Twoab)(Twocd)=Two(ac)(bd):10:3:error:*Occurscheck:cannotconstructtheinfinitetype:t1~Twot1t1Expectedtype:t1->t->bActualtype:Twot1t1->Twott->Two