<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:

def equal(actual, expected):
    '''
    Compare actual and expected using ==

    >>> expect = Expector([])
    >>> expect(1).to_not(equal, 2)
    (True, 'equal: expect 1 == 2')

    >>> expect(1).to(equal, 1)
    (True, 'equal: expect 1 == 1')
    '''
    is_passing = (actual == expected)

    types_to_diff = (str, dict, list, tuple)
    if not is_passing and isinstance(expected, types_to_diff) and isinstance(actual, types_to_diff):
        readable_diff = difflib.unified_diff(pformat(expected).split('\n'),
                                             pformat(actual).split('\n'), n=99)
        description = '\n'.join(['equal:'] + list(readable_diff))
    else:
        description = "equal: expect {} == {}".format(actual, expected)
    outcome = (is_passing, description)
    return outcome