| Intelib. Uma biblioteca de classes C ++ que permite fazer programação Lisp dentro do seu programa C ++ |
Baixe Agora |
Intelib. Classificação e resumo
- Nome do editor:
- Andrey V. Stolyarov
- Site do editor:
- http://www.intelib.org/
Intelib. Tag
Intelib. Descrição
Uma biblioteca de classes C ++ que permite fazer programação Lisp dentro do seu programa C ++ A Intelib é uma biblioteca de classes C ++ que permite fazer programação Lisp no seu programa C ++ mesmo sem qualquer pré-processamento adicional, sem todas aquelas convenções de chamadas, etc.Você pode escrever um código C ++ (ou seja, um código que é aceito pelo seu compilador C ++) Pensando em um "modo lisp" e o código que você escreve parecerá muito parecido com o código Lisp, ele será puro C ++. Para lhe dar o sentimento essencial, o exemplo a seguir é fornecido. (Defun isomorphic (Árvore da árvore1) (Átomo Árvore1) (Atom tree2)) ((átomo tree2) nil) (t (e (isomorfo (carrume de carro1)) (isomorfico (cdr árvore1))))))) Apenas uma função lisp, isn Isso? Agora olhe para o seguinte código: (l | defun, isomorphic, (l | tree1, tree2), (l | cond, (L | átomo, árvore1), (L | átomo, árvore2)), (L | (L | átomo, tree2), nil), (l | t, (l | e, (l | isomorfo, (l | carro, árvore1), (L | carro, árvore2)), (l | isomorfo | CDR, Árvore1), (L | CDR, Árvore2)))))) Obviamente, o código é o mesmo, a sintaxe mudou um pouco, mas ainda é o mesmo. Bem, eu te surpreendo se eu disser que é código C ++? Se você não acredita, olhe para o seguinte: // arquivo isomorph.cpp #include "lisp / lisp.hpp" #include "lismbol / lsymbol.hpp" #include "lfun_std.hpp" lsymbol isomorphic ("isomorphic") ; Lfunctistsymbol defun ("defun"); lfunctionalsymbol cond ("cond"); Lfunctistsymbol átomo ("átomo"); lfunctistsymbol e ("e"); Lfunctalsymbol carro ("carro"); Lfunctalsymbol CDR ("CDR"); Llistconstructor l; void lispinit_isomorphic () {static lsymbol tree1 ("tree1"); Ética Lsymbol tree2 ("tree2"); ////////////////// // (L | defun, isomorfo, (l | tree1, tree2), (l | cond, (l | átomo, árvore1), (L | átomo, árvore2)), (L | átomo, árvore2) Nil), (l | t, (l | e, (l | isomorfo, (l | carro, árvore1), (L | carro, árvore2)), (l | isomorfo, (l | cdr, tree1), L | cdr, tree2))))))). Avaliar (); ////////////////////////////////////////////////////////////////////////////// } // End of FileWell, este código é um módulo C ++ completo e compila muito bem. Nenhuma piada, é real.Ny the Way, não tente encontrar qualquer uso que fiz do macroprocessador. Nenhuma macros já foi usada pela Intelib (exceto aquelas para diretivas de compilação condicional). Em vez disso, basta lembrar que a vírgula é um operador em C ++ e pode ser sobrecarregada para tipos de dados inventados pelo usuário. O que há de novo nesta versão: · A versão inclui uma implementação do modelo de computação do Refal significativamente retrabalhado por Igor Bronshtein (obrigado Igor!). · Esta implementação parece ser notavelmente mais rápida do que a anteriormente existente.
Intelib. Software Relacionado