Funciones & macros

Se pueden crear funciones y macros a partir de las funciones principales del núcleo.

Ambas se podría decir que tienen el mismo fin, pero el proceso de funcionamiento es diferente.

  • defun es la palabra que se utiliza para definir una función definición de funcion .
    Una función es un subprograma que realiza una tarea más o menos simple (la idea es simplificar).

    Una función es un símbolo, un nombre que la identifica con una tarea a realizar.

    A las funciones se les llama con el car y se les pasa como argumento el cdr.

    Cuando se llama a una función se reserva espacio de memoria en la pila, donde se cargan los parámetros enviados.
    Se realiza las operaciones indicadas en el cuerpo .
    Se libera la pila .
    A esto se le llama paso por valor.

    Estas funciones evalúan sus argumentos.

  • defmacro Es la palabra utilizada para definir una macro definición de macro .
    Una macro no carga una pila , la macro lo que realiza es una expansión, es decir cada vez que se encuentra su llamada lo que hace es sustituir esta por el cuerpo de forma literal con las variables enviadas.
    Esto tiene dos consecuencias , la primera es que el código se ejecuta más eficientemente (de forma general) ya que no hay que hacer reservas de memoria en una pila pero por contra hay que tener en cuenta que la expansión puede hacer algunas cosas no previsibles si no somos muy conscientes en esto.
    Es más difícil depurar , corregir y localizar errores.
  • Las macros no evalúan sus argumentos.