Flat' constructor for the Pattern class

    Positional and keyword arguments are mapped into `args` and `kwargs`,
    respectively. Useful for defining rules that match an instantiated
    Expression with specific arguments

def pattern(head, *args, mode=1, wc_name=None, conditions=None, **kwargs) \
        -> Pattern:
    """'Flat' constructor for the Pattern class

    Positional and keyword arguments are mapped into `args` and `kwargs`,
    respectively. Useful for defining rules that match an instantiated
    Expression with specific arguments
    """
    if len(args) == 0:
        args = None
    if len(kwargs) == 0:
        kwargs = None
    return Pattern(head, args, kwargs, mode=mode, wc_name=wc_name,
                   conditions=conditions)