  In this document, we propose a description, via a Haskell implementation, of
a generalization of the notion of regular expression allowing us to group the
definitions and the methods of (tree or word) automata constructions over one
generic structure, based on enriched category theory tools. We first recall
several methods of conversion from expressions to automata, enlightening the
similarities between the words and trees cases. We then produce an original
study of the power of enriched category theory applied 1) to automata and
expressions implementation, and 2) to the study of associated algorithms, using
advanced concepts of functional programming, while simultaneously constructing
a Haskell implementation of notions of enriched category theory and associated
automata. More precisely, the Haskell implementation and the algebraic
definition of the generic automaton structure are based on the following ideas:
  - enriched categories, enriched functors, enriched monads, etc. can be
implemented in Haskell;
  - Type level programming can be used to properly encode function arity;
  - monoids (word structure) and operads (tree structure) can be encoded as
monoid objects;
  - tree and word automata can be represented by the same algebraic structure,
via enriched categories.
  This generalization leads to surprising remarks. As an example, some
classical algorithms (determinization, completion, conversion from alternating
to deterministic automaton) can be regrouped in only one function. We will then
define a notion of generalized expressions based on the notion of monoidal
tensor product.
  Haskell sources are available at:
http://ludovicmignot.free.fr/HDR/src-HDR.zip
