'Return a string representation of the function.
The representation includes the function name, arguments and result
(if available), as well as the name of the function class.'

def __repr__(self):

    fntype = type(self)
    classname = '.'.join(filter(None, (getattr(fntype, attr, '') for attr in ('__module__', '__name__'))))
    return ('<%s    {%s:    %r}    ->    %s>' % (classname, self.fn_name, self.args, self._repr_result()))
