Prolog.NET: обратный путь и массивы - PullRequest
0 голосов
/ 13 декабря 2010

Я прошу прощения за трату вашего времени, но я застрял: / Я прочитал руководство несколько раз, но у меня все еще есть несколько вопросов о разработке в Prolog.Net (http://prolog.hodroj.net/ версия).

  • Как получить все возможные ответы на запрос? например. для базы данных
f(a, 20).
f(a, 30).
f(a, 40).
f(b, 20).

f (a, X). должен вернуться [20, 30, 40]. Я попробовал метод Redo (), но он у меня не сработал.

  • Как использовать массивы в запросах? Код, подобный этому
AbstractTerm a = new AbstractTerm();
AbstractTerm b = new AbstractTerm();
ArrayList c = new ArrayList(symptomsConfirmed.ToArray());
ArrayList d = new ArrayList(symptomsDenied.ToArray());
database.q(a, c, d, b);

вызвать InvalidCastException (Невозможно преобразовать из 'System.Collections.ArrayList' в 'Axiom.Runtime.AbstractTerm'.)

Я был бы очень благодарен за любую помощь. МСМ.

1 Ответ

0 голосов
/ 13 декабря 2010

Проверьте сигнатуру метода q, и я уверен, что второй и третий параметры имеют тип Axiom.Runtime.AbstractTerm, а не тип System.Collections.ArrayList.Сценарий database.q (a, c, d, b) вероятен там, где выдается исключение, потому что он ожидает AbstractTerms, куда вы отправляете переменные c и d (ArrayLists).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...