title: Is there any algebraic structures used in functional programming other then monoid?
body: <p>I recently getting to know about functional programming (in Haskell and Scala). It's capabilities and elegance is quite charming. </p>
  
  <p>But when I met Monads, which makes use of an algebraic structure named Monoid, I was surprised and glad to see the theoretic knowledge I have been learning from Mathematics is made use of in programming. </p>
  
  <p>This observation brought a question into my mind: Can Groups, Fields or Rings (see <a href="http://en.wikipedia.org/wiki/Algebraic_structure" rel="noreferrer">Algebraic Structures</a> for others) be used in programming for more abstraction and code reuse purposes and achieving mathematic-alike programming?</p>
  
  <p>As I know, the language named <a href="http://projectfortress.sun.com/Projects/Community" rel="noreferrer">Fortress</a> (which I would surely prefer over any language once when its compiler is completed) defines these structure in its library code. But only uses I saw so far was for numeric types, which we already familiar with. Could there be any other uses of them?</p>
  
  <p>Best regards,
  ciun</p>