This paper discusses some advantages of supporting polymorphic recursión in programming languages and describes a decidable type inference algorithm for typing polymorphic and possibly mutually recursive definitions, using Haskell to provide an executable high level specification of the algorithm.