Takže ve výsledku funkce s libovolným počtem parametrů, která vrací Monoid, je Monoid.
To se mi nezdá. Funkce s libovolným počtem parametrů bude Monoid jen po ruční curryfikaci. Automaticky ne.
funkce s libovolným počtem argumentů je funkce s jedním argumentem kde výsledek je funkce s libovolným počtem argumentů minus jedna 
a0 -> a1 -> ... an -> t
je jako
a0 -> t' kde t' = (a1 -> ... -> an -> t)
nebo taky
a0 -> (a1 -> ... an -> t)
Ha! Rozumím.
Ještě doplním, že v signaturách typů je typový operátor → zprava asociativní, takže a→b→c znamená, chceme-li být zcela přesní, a→(b→c) a ta curryfikace v podstatě formálně znamená, že ke každé funkci typu a→b→c existuje isomorfní funkce typu a×b→c (ty funkce nejsou formálně stejné, i když v konkrétní implementaci můžou být identické).