Tecnología

Inicio

Cómo crear una macro Lisp

Cómo crear una macro Lisp


Puede crecer y extender el poder del lenguaje de programación Lisp mediante el uso de macros. macros Lisp aplican un nombre a una combinación de partes existentes del lenguaje Lisp Lisp, bibliotecas o funciones de escribir para crear una nueva característica del lenguaje que evaluará como cualquier otro componente del lenguaje Lisp. Las macros son una forma de taquigrafía --- cuando se evalúa una macro, el intérprete se expande la macro en el código se encapsula, a continuación, ejecuta ese código. Un ejemplo de una macro Lisp que puede crear es una utilidad de conversión de temperatura Fahrenheit a Celsius. Este ejemplo muestra cómo una macro puede combinar otra macro y una función Lisp.

Instrucciones

1 Poner en marcha el terminal de línea de comandos haciendo clic en el botón "Inicio" y hacer clic en la opción de menú "Ejecutar". Tipo de "comando" en la casilla correspondiente, a continuación, haga clic en "Aceptar".

2 Inicie el intérprete de Common Lisp escribiendo "clisp" en el símbolo del sistema. Pulse la tecla "Enter".

3 Escriba el código de la primera parte de la aplicación en el símbolo de Lisp. Su nueva macro consiste en otra llamada Relación de macro. El comando defmacro crea la macro, que contiene la pendiente de la parcela de frente Celsius Fahrenheit.

(Relación defmacro () (/ 5,0 9,0))

4 Escriba el código de la segunda parte de la macro en el símbolo de Lisp. La función "diff" resta 32 de la temperatura en grados Fahrenheit.

(Defun diff (x) (- x 32.0))

5 Escriba el código para la parte final de la macro en el símbolo de Lisp. La macro "fc" acepta la temperatura en grados Fahrenheit, lo multiplica por la relación, lo multiplica por "diff", luego imprime el resultado.

(Defmacro fc (x) (* (ratio) (esta x)))

6 Prueba de la macro escribiendo "(fc 98.6)" en el símbolo del sistema Lisp. El intérprete debe imprimir 37.0, que es de 98.6 o de la temperatura corporal en grados Celsius.

Consejos y advertencias

  • Puede escribir el código Lisp con un editor de texto plano y cargarlo en el intérprete de Common Lisp. Introduzca el siguiente código en tu editor de texto, escribiendo o seleccionando en el código con el ratón, pulsando la tecla "Ctrl", además de "C" y pegarlo en el editor con un comando "Ctrl", además de "V".
  • (Relación defmacro () (/ 5,0 9,0))
  • (Defun diff (x) (- x 32.0))
  • (Defmacro fc (x) (* (ratio) (esta x)))
  • Guarde el archivo con el "test.lisp" nombre y reiniciar el intérprete de Common Lisp. En el símbolo de Lisp, escriba la línea siguiente a continuación, pulse la tecla "Enter":
  • (Carga "test.lisp")
  • Si obtiene el mensaje de error "DEFUN / defmacro (RATIO): # <Paquete común-LISP> está bloqueado", ". Introduzca" tipo "(continuar)" en la línea de comandos y pulse Por último, el tipo "(FC 110)" en el símbolo del sistema y presiona "Enter". El resultado debe ser 43.333336.
  • Un programa Lisp típica puede tener muchos niveles de paréntesis anidados. Si se omite un paréntesis, el programa no se ejecutará. Puede evitar paréntesis que faltan por escribir y editar sus programas en un editor de texto. Otra forma de evitar errores de programación es para difundir su código a través de varias líneas y utiliza la sangría para establecer unidades lógicas, aparte de código. Por ejemplo, la macro "fc" es más fácil de seguir y depurar si escribe en la siguiente (omitir los períodos, que están allí para la colocación correcta):
  • (Defmacro fc (x)
  • .... (*
  • .......(proporción)
  • ....... (Esta x)
  • .....)
  • )