입력 목록에 [asd, qweqwe, fsdf, lkasd]가 있습니다. 코드에서 볼 수 있듯이 목록의 각 상수를 연결하여 단일 변수 목록을 출력하고 싶습니다. yap prolog를 사용하면이 코드를 참조하고 다음과 같이 작성합니다. - 실행하십시오. write 함수는 'asd, asd2, asd3, asd4'가 아닌 _G1233을 출력합니다. 왜? 어떻게 내가 출력 코드 'asd, asd2, asd3, asd4'를 변경해야합니까?Prolog 상수 문자열 목록
run :- toAtomicVars([asd,asd2,asd3,asd4],',',Out),
write(Out),nl.
toAtomicVars([],In,Out).
toAtomicVars([A|B],In,Out) :-
atomic_concat(A,In,Out1),
atomic_concat(',',Out1,Out2),
toAtomicVars(B,Out2,Out2).
toAtomicVars ([A | B], 입출력) - atomic_concat (A, 입출력 아웃) atomic_concat (','아웃, 아웃 2) toAtomicVars (B, 아웃 2). 이걸 어떻게 생각하니? –
toAtomicVars ([A | B], Out)와 같은 것을 시도하십시오 : - atomic_concat (A, ',', O1), toAtomicVars (B, O2), atomic_concat (O1, O2, O).AtomicVars ([a, b, c, d], Out)를 호출하면 O1은 'a'가되고 O2는 'b, c, d'가됩니다. 그러면 연결되어 'a, b, CD' –