Intelib

Een bibliotheek van C ++ -klassen waarmee u Lisp-programmeren binnen uw C ++ -programma kunt doen
Download nu

Intelib Rangschikking & Samenvatting

Advertentie

  • Rating:
  • Vergunning:
  • GPL
  • Prijs:
  • FREE
  • Naam uitgever:
  • Andrey V. Stolyarov
  • Uitgever website:
  • http://www.intelib.org/

Intelib Tags


Intelib Beschrijving

Een bibliotheek van C ++ -klassen waarmee u Lisp-programmeren binnen uw C ++ -programma kunt doen Intelib is een bibliotheek van C ++ -klassen waarmee je Lisp-programmeering binnen je C ++ -programma kunt doen, zelfs zonder extra preprocessing, zonder al die bellende conventies enz. Je kunt een C ++ -code schrijven (dat wil zeggen, een code die wordt geaccepteerd door je C ++ -compiler wordt een code) Denken in een "LISP-modus" en de code die u schrijft, ziet er veel uit als Lisp-code. Het is puur C ++. Om u het essentiële gevoel te geven, wordt het volgende voorbeeld verstrekt. (Defun isomorf (Tree1 Tree2) (COND ((Atoom Tree1) (Atom Tree2)) ((atoomboom2) nul) (t (en (isomorf (carboom1) (autoboom2)) (isomorf (CDR tree1) (CDR TRECE2)))))))))))))))))))))) Gewoon een LISP-functie, isn niet? Kijk nu naar de volgende code: (L | Defun, Isomorf, (L | Tree1, Tree2), (L | Cond, (L | (l | atoom, tree1), (L | atoom, tree2)), (L | (L | atoom, tree2), nul), (l | t, (l | en, (l | isomorf, (l | auto, tree1), (L | auto, tree2)), (L | isomorf, (l | CDR, Tree1), (L | CDR, Tree2))))))))))) Uiteraard is de code precies hetzelfde, de syntaxis veranderde een beetje, maar het is nog steeds hetzelfde. Nou, verras ik je als ik zeg dat het C ++ -code is? Als u niet gelooft, bekijk dan naar het volgende: // Bestand isomorph.cpp #Include "LISP / LISP.HPP" #Include "LISP / LSYMBOL.HPP" #Include "LFUN_STD.HPP" LSYMBOL ISOMORFHISCH ("ISOMORFE") ; Statische LFunctionalsymbol Defun ("Defun"); Statische LFunctionSYMBOL COND ("COND"); Statische LFunctionalsymbol Atom ("atoom"); Statische LFunctionalsymbol en ("en"); Statische LFunctionalsymbol Auto ("Auto"); statische LFunctionalsymbol CDR ("CDR"); Llistconstructeur l; void lispinit_isomorfe () {statische lsymbol tree1 ("tree1"); Statische lsymbol Tree2 ("Tree2"); / @ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / // / / / / / // (L | Defun, isomorf, (l | tree1, tree2), (l | cond, (l | (l | atoom, tree1), (l | atoom, tree2)), (L | (l | atoom, tree2) , Nul), (l | t, (l | en, (l | isomorf, (l | auto, tree1), (l | auto, tree2)), (L | isomorf, (L | CDR, Tree1), ( L | cdr, tree2)))))). Evalueer (); // / / / / / / / / / / / / / / / / / / / / / / / / // / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /,8+ } // Einde FileWell, deze code is een complete C ++ -module en compleet is vrij goed. Geen grap, het is echt. De manier, probeer geen gebruik te vinden dat ik maakte van de macroprocessor. Geen macro's zijn ooit gebruikt door Intelib (behalve die voor voorwaardelijke compileerrichtlijnen). In plaats daarvan herinner je gewoon dat komma's een operator in C ++ is en kan worden overbelast voor gebruikers-uitgevoelige gegevenstypen. Wat is er nieuw in deze release: · De versie bevat een implementatie van het Refal-computatiemodel dat aanzienlijk wordt herwerkt door Igor Bronshtein (bedankt Igor!). · Deze implementatie lijkt met name sneller dan de eerder bestaande.


Intelib Gerelateerde software