¿Hay alguna manera de definir constantes en prolog?Constantes Prolog
me gustaría escribir algo como
list1 :- [1, 2, 3].
list2 :- [4, 5, 6].
predicate(L) :- append(list1, list2, L).
El trabajo en torno a que estoy usando ahora es
list1([1, 2, 3]).
list2([4, 5, 6]).
predicate(L) :-
list1(L1),
list2(L2),
append(L1, L2, L).
pero es un poco torpe para enlazar una variable "inútil" como esto cada vez que necesito acceder a la constante.
Otro (incluso más feo) que funciona supongo que sería incluir cpp en la cadena de construcción.
(En mi aplicación real, la lista es una LUT de grandes dimensiones utilizados en muchos lugares.)
Eso no es una solución temporal. Eso se llama declaración de hechos. Usted declara el hecho de que 'list1/1' es un objetivo sucesivo si su argumento es' [1,2,3] '. No hay variables en prolog, por lo que puede suponer que cada "valor" (átomo o término) es constante y cada "variable" (nombre de valor) es constante no determinante. Cada "variable" (ej. 'L1') puede contener incluso' (1 + 2 * 3) 'y nunca será interpretada, porque ese es el término (algo como' (1+ (2 * 3)) 'y hay hecho '(7 es (1+ (2 * 3)).'). Cuando pasa 'list1' como argumento de append se interpreta como átomo. Puede definir' myappend (list1, list2, [1,2,3 , 4,5,6]). – ony
'I * * uso hecho-declaración como solución alternativa para no tener constantes. – aioobe