A Haskell library with typeclasses and types for common abstract algebra structures (Groups,Rings,Fields)