프롤로그에서 상수를 정의하는 방법이 있습니까?프롤로그 상수
지금
list1([1, 2, 3]).
list2([4, 5, 6]).
predicate(L) :-
list1(L1),
list2(L2),
append(L1, L2, L).
입니다 내가 사용하고있어 해결 방법
list1 :- [1, 2, 3].
list2 :- [4, 5, 6].
predicate(L) :- append(list1, list2, L).
같은 것을 쓰고 싶습니다하지만이 같은 "쓸모없는"변수를 바인딩 조금 서투른 상수에 액세스해야 할 때마다
또 하나의 (심지어 더 못생긴) 나는 빌드 체인에 cpp를 포함시키는 것이 좋습니다.
(내 실제 응용 프로그램에서 목록이 많은 장소에 사용되는 대형 LUT입니다.)
해결 방법이 아닙니다. 이것을 사실 선언이라고합니다. 인수가'[1,2,3]'이면 'list1/1'은 연속적인 목표라는 사실을 선언합니다. 프롤로그에는 변수가 없으므로 모든 "값"(원자 또는 용어)이 일정하고 각 "변수"(값 이름)가 비 결정적 상수라고 가정 할 수 있습니다. 각각의 "변수"(예 :'L1')는'(1 + 2 * 3)'과 같은 것을 가질 수 있으며 해석되지 않습니다. 'append '의 인자로'list1'을 넘겨 주면 그것은 atom로 해석됩니다. 당신은'myappend (list1, list2, [1,2,3])를 정의 할 수 있습니다. , 4,5,6]). – ony
상수를 사용하지 않기 위해 실제 선언을 사용하라 – aioobe