def is_arrayish(list_of_elements, expected_type=None) -> bool:
    """
    Checks, if all list / tuple types are actually of the same type.
    If no type is specified, the first element in the list will be the determinator
    """
    ret_val = False

    if isinstance(list_of_elements, (list, tuple)):
        ret_val = True

        if len(list_of_elements) > 0:
            _expected_type = type(list_of_elements[0]) if expected_type is None else expected_type
            for element in list_of_elements[1:]:
                if not isinstance(element, _expected_type):
                    ret_val = False
                    break
    return ret_val