Я пытаюсь выполнить функцию на SML, которая инвертирует первый список, а затем объединяет его со вторым списком (что-то вроде: list1 = [5,3,1] и list 2 = [6 7 8], затем inv (list1, list2) = [1,3,5,6,7,8].) Вот код:
fun inv (nil,nil) = []
|inv (ha::ta,hb::tb) =
if ha = [] then ta::(hb::tb)
else ha::inv(ta,hb::tb);
Он возвращает это:
Ошибка: типы ветвей, если не совпадают [цикличность], затем ветвь: '' Z список список список иначе ветвь: '' Z список список в выражении:
если ha = nil, то ta :: hb :: tb else ha :: inv (ta, ::)
Кто-нибудь может мне помочь с этим, пожалуйста?
fun inv (xs, ys) = rev xs @ ys
- person Simon Shine   schedule 03.09.2013