Casting SPELs

Capítulo 2:
Sintaxis y semántica

La semántica es el contenido de tu programa, que puede ser algo casual o fortuito, mientras que la sintaxis de cualquier lenguaje de programación es cualquier cosa menos fortuita, sino que más bien debe establecerse con exactitud. Como queda dicho, la sintaxis describe cómo te puedes comunicar con el compilador, a fin de que él pueda traducir tu programa al lenguaje propio de la máquina.

En la sintaxis de Maxima es fundamental tener en cuenta que todo cuanto introduces hasta el punto y como final es una sentencia, y cada sentencia tiene un valor, que tú luego tomarás como respuesta. No necesitas, por tanto, escribir ninguna sentencia que imprima el resultado.

'whiskey_bottle;
==> whiskey_bottle

La impresión con este tipo de letra y color son expresiones en Maxima, que tú puedes fácilmente copiar en el editor de Maxima. Pulsa a continuación la tecla intro y allá va tu aventura con el texto.

Las sentencias más básicas son los átomos. Los átomos, que ya suenan como muy elementales, pueden ser símbolos (nombres), números y texto entrecomillado. Los dos últimos se tienen a sí mismos como valor. Tratándose de símbolos es necesario saber en qué modo interpreta el compilador tu sentencia; existen modo verbal y el modo nominal.

Cuando se escribió whiskey_bottle precedida de apóstrofo se leyó en modo nominal, devolviendo entonces su propio nombre como valor. Si sacamos el apóstrofo nos encontramos en el modo verbal:

whiskey_bottle;
==> whiskey_bottle

ˇVaya, otra vez whiskey_bottle como resultado! ¿A qué viene entonces hablar de los dos modos si whiskey_bottle sigue teniendo su propio nombre como valor? Respuesta: en el modo verbal le podemos asignar a nuestro símbolo otro valor.

whiskey_bottle: 'full;
==> full

Con los dos puntos asignamos un valor al símbolo que le precede. A partir de este momento el símbolo whiskey_bottle tendrá un nuevo valor en modo verbal, el cual nos ha sido devuelto como resultado. A partir de ahora debemos colocar el apóstrofo si queremos la respuesta whiskey_bottle. También podemos borrar la asignación con kill:

kill(whiskey_bottle);
==> done

Introducción | Capítulo 1 | Capítulo 2 | Capítulo 3 | Capítulo 4 | Capítulo 5 | Capítulo 6 | Capítulo 7 | Agradecimientos | Licencia

© Mario Rodríguez Riotorto, 2006