Эти «возникающие» ошибки встречаются очень часто, но все же довольно запутанно.На высоком уровне это означает, что вы используете элемент списка и список в одном контексте.То есть система типов сделала вывод, что ваш список состоит из самого себя, что-то вроде парадокса Рассела .
На практическом уровне это означает, что где-то вы использовали выражение, обозначающее список, в месте, где вы должны использовать выражение, обозначающее элемент списка (или наоборот).
В вашем случае выражение ins((List.tl l1), l2) (i-1)
уже имеет тип 'a list
, и вы помещаете его в дополнительный список [ins((List.tl l1), l2) (i-1)]
, делая его 'a = 'a list
, что вызывает ошибку вхождения.
Надеюсь, этого будет достаточно для исправления вашего кода.Удачи!:)