Type error: Illegal variable type for this position - Prolog

Узнай цену своей работы

Формулировка задачи:

Нужно разделить список на два списка: в первом - N элементов с начала исходного списка, во втором - все что осталось. Моя попытка написать такую программу не увенчалась успехом и я не понимаю как исправить ошибку Помогите, пожалуйста. Ошибка : E;Test_Goal, pos: 199, 505 Type error: Illegal variable type for this position Курсор указывает на Tail2 в razdel(Tail, Tail1, Tail2, M).
Листинг программы
  1. domains
  2. i=integer
  3. il=i*
  4. predicates
  5. razdel (il,il,il, i)
  6. clauses
  7. razdel([Z],[Z],[], 1):-!.
  8. razdel([Z|Tail],_,[Z|Tail], 0):-!.
  9. razdel([X|Tail],[X|Tail1],[Tail2], N):- N>0, M=N-1, razdel(Tail, Tail1, Tail2, M).
  10. goal
  11. razdel([2,-6,-9,3],L1,L2, 2).

Решение задачи: «Type error: Illegal variable type for this position»

textual
Листинг программы
  1. domains
  2. int=integer
  3. intl=int*
  4.  
  5. predicates
  6. split(intl,int,intl,intl)
  7.  
  8. clauses
  9. split(X,0,[],X).
  10. split([A|T],N,[A|B],E) :- N>0, N1=N-1, split(T,N1,B,E).

Объяснение кода листинга программы

  1. В этом коде используется язык программирования Prolog.
  2. Код определяет два домена: int (целое число) и intl (массив целых чисел).
  3. Также в коде определена функция split, которая принимает входные параметры X, N, A и E.
  4. Функция split используется для разделения массива X на подмассивы A и E.
  5. Если N равно 0, то возвращается пустой список для A и X для E.
  6. Если N больше 0, то функция рекурсивно вызывается для T и N-1, чтобы получить подмассив B, который добавляется к A, чтобы получить новый список E.
  7. Если N не больше 20, то код не вызывает ошибку.
  8. В этом коде нет использования функций или операторов, которые могут привести к ошибке Illegal variable type for this position.
  9. Следовательно, код не может вызвать ошибку Illegal variable type for this position.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.8 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут