
fun compareAny(A, B) {
    
    fun compareLists(A: List, B: List) {
        n = count(A);
        if n != count(B):
            return false;

        i = 0;
        while i < n: {
            if not compareAny(A[i], B[i]):
                return false;
            i = i + 1;
        }
        return true;
    }

    T = type(A);

    if T != type(B):
        return false;

    if T == List:
        return compareLists(A, B);

    if T == Map:
        error("Maps aren't supported yet!");

    return A == B;
}

assert(compareAny(1, 2) == false);
assert(compareAny([], []) == true);
assert(compareAny([], [1]) == false);
assert(compareAny([1, 2, 3], [1, 2, 3]) == true);
assert(compareAny([1, 2, 3], [1, 2, 4]) == false);
assert(compareAny([1, 2, 3], [1, 2, 3, 4]) == false);
