#prolog #dcg
#пролог #dcg
Вопрос:
Наличие правила :
nx(X^dog(X)) --> [dog].
В старых книгах запрос на вышеуказанный факт звучит так :
?- nx(X^R).
но теперь я должен использовать :
?- phrase(nx(X^F),R).
F = dog(X),
R = [dog].
потому что он закодирован как :
?- listing(nx).
nx(X^dog(X), [dog|A], A).
как он был закодирован до того, что его не нужно было распаковывать с помощью phrase() .
Комментарии:
1. В старых книгах, возможно, никогда не было
nx(X^F,R,[]).
никакой другой кодировки. На какую книгу вы ссылаетесь?2. NLP для Prolog Pro и Prolog для анализа NLP
3. например, см. n(): np(Sem) —> d((X ^ Res) ^ Sem), n (X ^ Res). … это потому, что это внутри правила?
4. Да, внутри правила DCG вы вызываете другое правило без дополнительных аргументов и без
phrase
. Только при вызове правила DCG из кода, отличного от DCG, вы используете дополнительные аргументы (старый стиль) илиphrase
(новый стиль).5. Но где вы это видели
?- nx(X^R).
?? Мягко говоря, не в Pereira amp; Shieber.