def enum(*sequential, **named):
    """ Create an enum type, as in the C language.
        You can, as i C, list names without any value, or set a value by using a named argument.
        But, of course, you cannot add unnamed arguments after named arguments...
        
        :param sequential: list of strings
        :param named: dictionnary of <strings:int value>
        :return: A new type created by using the params.
        :rtype: Enum  
    """
    enums = dict(zip(sequential, range(len(sequential))), **named)
    return type('Enum', (), enums)
