Проверка на равенство в списках в SML

я хочу написать функцию, которая проверяет равенство списков в SML, например: [1,2,3] = [1,2,3]; val it = true: bool

Поэтому вместо того, чтобы записывать все это целиком, я хочу создать функцию, которая принимает два предопределенных списка и сравнивает их, так что если list01 = [1,2,3] и list09 = [1,2,3], тогда веселье равно (список01, список09); вернет -val it = true: bool;

Заранее благодарим за любые идеи / подсказки и помощь :)


person user457142    schedule 29.09.2010    source источник
comment
Что вы имеете в виду, когда записываете все? Писать equal (list01, list09) на самом деле дольше, чем писать list01 = list09, так что всего этого вы хотите избежать написания?   -  person sepp2k    schedule 29.09.2010
comment
Я предположил, что будет проще создать функцию compare ([list01, list09]); чем собственно сравнить два списка вручную, если бы они были очень! длинная.   -  person user457142    schedule 29.09.2010


Ответы (2)


Вот непроверенный образец:

fun compare ([], []) = true # both empty
    |   compare (x::xs, y::ys) = (x = y) and compare(xs,ys)
    |   compare (_, _) = false # different lengths
person wojtek    schedule 29.09.2010

Кажется, вы знаете, что = работает со списками, поэтому (как я уже сказал в своем комментарии) я не понимаю, почему вам нужно определять функцию equal.

При этом вы можете просто написать:

fun equal (a, b) = (a = b);
person sepp2k    schedule 29.09.2010