| Intelib Una biblioteca de clases de C ++ que le permite hacer la programación de LISP dentro de su programa C ++ |
Descargar ahora |
Intelib Clasificación y resumen
- Nombre del editor:
- Andrey V. Stolyarov
- Sitio web del editor:
- http://www.intelib.org/
Intelib Etiquetas
Intelib Descripción
Una biblioteca de clases de C ++ que le permite hacer la programación de LISP dentro de su programa C ++ Intelib es una biblioteca de clases de C ++ que le permite hacer la programación de LISP dentro de su programa C ++, incluso sin ningún preprocesamiento adicional, sin todas aquellas convenciones de llamadas, etc. Puede escribir un código C ++ (es decir, un código aceptado por su compilador C ++) Pensando en un "modo LISP" y el código que escribe se parecerá al código LISP aunque será puro C ++. Para darle la sensación esencial, se proporciona el siguiente ejemplo. (Desfunar isomorfos (Tree1 Tree2) (Cond árbol1) (Tree Atom2) ((ÁRBLE ATOM2) NIL) (T (y (isomorfo (Tree 1) (Tree de Coche2) (Isomorfo (Tree1) (CDR Tree2))))) SOLO UNA FUNCIÓN LISP, ISN '¿Es? Ahora mire el siguiente código: (L | Defun, Isomorphic, (L | Tree1, Tree2), (L | Cond, (L | Átomo, Tree1), (L | Atom, Tree2)), (L | (L | Atom, Tree2), NIL), (L | T, (L | y (L | isomorfic, (L | Coche, Tree1), (L | Coche, Tree2)), (L | Isomorphic, (l | CDR, TREE1), (L | CDR, árbol2))))) Obviamente, el código es igual, la sintaxis cambió un poco, pero sigue siendo la misma. Bueno, ¿te sorprende si digo que es código C ++? Si no cree, observe lo siguiente: // archivo isomorph.cpp #include "lisp / lisp.hpp" #include "lisp / lsymbol.hpp" #include "lfun_std.hpp" lsymbol isomorphic ("isomorphic") ; estático Lfunctionsymbol Defun ("defun"); estática lfunctionsymbol cond ("cond"); estático Lfunctionsymbol átomo ("átomo"); estática lfunctionsymbol y ("y"); estático lfunctionsymbol coche ("automóvil"); estático Lfunctionsymbol CDR ("CDR"); LlistConstructor L; void lispinit_isomorphic () {estático lsymbol tree1 ("árbol1"); estadístico lsymbol tree2 ("árbol2"); //////////////////////////////////////////////// // (L | Defun, Isomorphic, (L | Tree1, Tree2), (L | Cond, (L | (L | Atom, Tree1), (L | Atom, Tree2), (L | (L | Atom, Tree2) , Nil), (l | t, (l | y, (l | isomorphic, (l | car, árbol1), (l | coche, árbol2)), (l | isomorfic, (l | cdr, árbol1), ( L | cdr, árbol2)))). Evaluar (); ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// } // FIN de FILEWELL, este código es un módulo C ++ completo y se compila bastante bien. Sin broma, es real. Por cierto, no intente encontrar ningún uso que salí del macroprocesador. No se han utilizado ninguna macros por Intelib (excepto aquellos para las directivas de compilación condicional). En su lugar, simplemente recuerde que la coma es un operador en C ++ y se puede sobrecargar para los tipos de datos inventados por el usuario. ¿Qué hay de nuevo en este lanzamiento: · La versión incluye una implementación del modelo de cómputo de reforma reelaborado significativamente por Igor Bronshtein (¡Gracias Igor!). · Esta implementación parece ser notablemente más rápida que la anterior.
Intelib Software relacionado