DoCon is a program for symbolic computation in mathematics - package of modules DoCon joins the categorial approach to the mathematical computation expressed via the Haskell type classes, and explicit processing of the domain description terms. It implements recently a good piece of commutative algebra: linear algebra, polynomial gcd, factorization, Groebner bases, and other functions. They are programmed under the very generic assumptions , like "over any Euclidean ring", over any GCD-ring, any field, and so on. DoCon also supports the constructions on domains: Fraction, Polynomial, Residue ring, and others. That is certain set of operations on a constructed domain is built automatically.
Haskell lets you write some strange-looking programs in a style known as "circular programming." Imagine transforming a tree with integer leaves into a tree that replaces all the leaves with the minimum leaf value. Normally we'd do this in two passes: first find the minimum leaf, and then traverse the tree a second time, replacing the leaves with the minimum value. In a lazy language you can do this in one go
E. Meijer, and J. Jeuring. Advanced Functional Programming, First International Spring School on Advanced Functional Programming Techniques-Tutorial Text, page 228--266. London, UK, UK, Springer-Verlag, (1995)
S. Peyton Jones, and J. Salkild. Proceedings of the fourth international conference on Functional programming languages and computer architecture, page 184--201. New York, NY, USA, ACM, (1989)