function to be folded over a list (with initial value `None`)
        produces one of:

        1. `None`
        2. A single value
        3. A list of all values

def build_lst(a, b):
    """ function to be folded over a list (with initial value `None`)
        produces one of:

        1. `None`
        2. A single value
        3. A list of all values
    """
    if type(a) is list:
        return a + [b]
    elif a:
        return [a, b]
    else:
        return b