Предполагая, что у вас есть два списка одинаковой длины, вы можете определить эту функцию:
fun greater nil nil = nil
| greater (x::xs) (y::ys) =
if x > y then x::(greater xs ys) else y::(greater xs ys);
Или, альтернативно, сведя задачу к отображению списка пар целых чисел в список целых чисел:
fun zip nil nil = nil
| zip (x::xs) (y::ys) = (x,y)::(zip xs ys);
fun max (x,y) = if x > y then x else y;
fun greater xs ys = map max (zip xs ys);
Обратите внимание, что списки в ML обозначаются как [1,2,3]
, а не (1,2,3)
, который представляет собой кортеж из трех элементов. Затем эта функция вызывается как:
- greater [1,2,3,4] [2,3,4,5];
val it = [2,3,4,5] : int list
- greater [~1,8,3] [8,~1,~2];
val it = [8,8,3] : int list
person
Community
schedule
11.12.2013