2012-03-13 16 views
5

Recientemente comencé a jugar con los especificadores de tipo para mejorar la eficiencia del código. This es una lista de todos los símbolos de especificador de tipo en el estándar Common Lisp.Especificadores de tipo Common Lisp

No puedo ver el árbol a través del bosque.

¿Alguien podría dar (o señalar) una breve descripción de los diferentes tipos de especificadores, y cuándo uno los usaría?

Aunque estoy interesado en aprender acerca de todos ellos, mi interés directo sale a las diferencias entre los tipos relacionados de números (fixnum, bignum, flotador, de un solo flotador, flotación corto, etc ...)

+0

Cabe señalar que la especificación de tipos no debe ser el primer paso para mejorar el rendimiento. Por lo general, estos no son necesarios, a excepción de los bucles apretados que son pesados ​​en los cálculos. – hajovonta

Respuesta

8

CLtl2 describe una versión de Common Lisp antes de ser estandarizada. No lo use como referencia, hay varias diferencias con el estándar.

Utilice Common Lisp Hyperspec, que se basa en el estándar ANSI Common Lisp.

Los tipos de Common Lisp se describen en el HyperSpec aquí: 4.2.3 Type Specifiers. Los diversos tipos están vinculados desde allí.

+0

¡Eso es maravilloso! ¡Gracias! – mck

6

Aquí hay una implementación típica:

fixnum es un número entero pequeño que cabe en un registro de máquina; es el número entero más rápido

bignum es un número entero de tamaño ilimitado

double-float es un doble precisión IEEE número de punto flotante; también puede ser muy rápido, dependiendo de su computadora

single-float es un número de coma flotante de precisión simple IEEE; que tiene menos rango y precisión, y puede ser más lento que el doble, pero tiene menos memoria

short-float y long-float a menudo se asignan a los dos tipos anteriores, sino que también puede ser diferente, de nuevo, dependiendo de su aplicación CL

+0

muy útil, ¡gracias! – mck