dcg을 사용하여 Prolog에 술어 CleanList/3
을 작성해야합니다.이 목록은 목록을 분석하고 번호가 제거되지 않은 모든 요소가 있지만 목록이 같은 새 목록을 반환합니다. 예를 들어DCG를 사용하여 목록에서 비 번호 제거
:
?- cleanList([1,2,d,67,3.2,'CSI2120',foo,5],LL).
LL = [1, 2, 67, 3.2, 5].
나는 재귀 케이스 DCG을 구현하는 데 어려움을 겪고 기본 케이스를 썼다. 누군가 이걸로 나를 도울 수 있습니까?
자료 케이스 : 그것은이하는 모든 cleanlist/1
의 인수가 비어있을 때 빈 목록을 반환하고, 아주 간단
cleanlist([]) --> [].
:
cleanList(L,LL) :- cleanList(LL,L,[]),!.
귀하의 기본 케이스는 DCG하지 않고, 기본이 아니다. 기본 사례는 재귀 적이 지 않지만 기본, 최하위 수준의 관계를 제공해야합니다. 재귀 호출은 단지 2를 취하는 술어에 3 개의 인수를 사용합니다. – lurker
'number (X)'가 숫자 인 경우에만'number (X)'가 성공한다는 사실을 사용할 수 있습니다. – lurker