Al resolver problemas en una tarea más grande para la escuela, encontré un error que había cometido, donde trataba una sola lista de elementos (una pila con un artículo) como si fuera un solo artículo. He resuelto mi problema, sin embargo, en la prueba adicional noté algo raro:Prólogo: artículo único frente a lista de elementos individuales
48 ?- 1 is [1].
true.
49 ?- -1 is [-1].
ERROR: is/2: Type error: `character' expected, found `-1'
50 ?- 0.66 is [0.66].
ERROR: is/2: Type error: `character' expected, found `0.66'
comportamiento similar ocurre usando =: =/2 en lugar de decir/2. Por cualquier razón, una sola lista de elementos se considera igual que un solo elemento, pero solo para enteros no negativos.
Curiosidad más que cualquier otra cosa ... ¿Alguien sabe por qué es esto?
Gracias!
Gracias! Esa parece ser la respuesta, ya que "97 es [a]". es verdad. Sin embargo, tal vez soy un idiota, pero realmente no puedo entender exactamente lo que se describe en esa página de manual. Los predicados enumerados (mínimo, máximo, abs, etc.) no parecen existir para mí, y no entiendo por qué todos los argumentos tienen + signos al frente. Y no entiendo por qué el predicado relacionado con esta Q es solo un punto con dos argumentos, no estoy usando nada de eso. – The111
Esa página es sobre SWI-Prolog; tal vez su implementación no es compatible con min, max, etc.? Algunos argumentos están precedidos por '+' ya que esto indica el modo, es decir, '+' significa vinculado (y no variable). Por último, la sintaxis de lista '[a, b]' es una abreviatura para el predicador constructor de la lista './2' (por lo que en realidad es'. (A,. (B, [])) '). En su caso, una lista de un solo entero como '[1]' es una abreviatura para '. (1, [])'. – sharky
Ok, grandes explicaciones ... Creo que lo tengo ahora. Gracias de nuevo. – The111