fun insert R x [] acc = [x]
| insert R x (h::t) acc =
if R (x,h) then acc::(x::(h::t))
else(
acc=acc::h;
insert R x t acc
);
fun isort_aux R [] acc = acc
| isort_aux R (x::xs) acc =
isort_aux xs (insert R x acc [])
fun isort_2 R xs = isort_aux R xs []
Я пытаюсь написать хвостовой рекурсивный код для вставки сортировки в sml, для которого я сделал аккумулятор 'a cc', но в строке 5 acc = a cc :: h выдает следующую ошибку
Standard ML of New Jersey v110.78 [built: Thu Aug 31 03:45:42 2017]
- stdIn:5.3-5.13 Error: operator and operand don't agree [circularity]
operator domain: 'Z * 'Z list
operand: 'Z * 'Z
in expression:
acc :: h
-