About Site Map Submit Contact Us Log in | Create an account
Create an account Log In
Average Rating
User Rating:
Visitors Rating:
My rating:

Write review
  • License: Freeware
  • Last update: 7 years ago
  • Total downloads: 114
  • Price: Free |
  • Operating system: Linux
  • Publisher: Andrey V. Stolyarov
See full specifications

linux default iconInteLib Publisher's description

A library of C++ classes which lets you do Lisp programming within your C++ program

InteLib is a library of C++ classes which lets you do Lisp programming within your C++ program even without any additional preprocessing, without all those calling conventions etc.

You can write a C++ code (that is, a code which is accepted by your C++ compiler) thinking in a "Lisp mode" and the code you write will look much like Lisp code altough it will be pure C++.

To give you the essential feeling, the following example is provided.

(defun isomorphic (tree1 tree2)
(cond ((atom tree1) (atom tree2))
((atom tree2) NIL)
(t (and (isomorphic (car tree1)
(car tree2))
(isomorphic (cdr tree1)
(cdr tree2))

Just a Lisp function, isn't it? Now look at the following code:

(L|T, (L|AND,
(L|CAR, TREE2)),

Obviously the code is just the same, the syntax changed a bit, but it's still the same. Well, do I surprise you if I say it is C++ code? If you don't believe, look at the following:

// File isomorph.cpp
#include "lisp/lisp.hpp"
#include "lisp/lsymbol.hpp"
#include "lfun_std.hpp"


static LFunctionalSymbol< LFunctionDefun > DEFUN("DEFUN");
static LFunctionalSymbol< LFunctionCond > COND("COND");
static LFunctionalSymbol< LFunctionAtom > ATOM("ATOM");
static LFunctionalSymbol< LFunctionAnd > AND("AND");
static LFunctionalSymbol< LFunctionCar > CAR("CAR");
static LFunctionalSymbol< LFunctionCdr > CDR("CDR");

LListConstructor L;

void LispInit_isomorphic() {
static LSymbol TREE1("TREE1");
static LSymbol TREE2("TREE2");
(L|T, (L|AND,
(L|CAR, TREE2)),
// end of file

Well, this code is a complete C++ module and it does compile pretty well. No joke, it's real.

By the way, don't try to find any use I made out of the macroprocessor. No macros have ever been used by InteLib (except those for conditional compile directives). Instead, just recall that comma is an operator in C++ and can be overloaded for user-invented data types.

What's New in This Release:

В· The reader has been generalized so that it can be reprogrammed not only for Lisp-like languages, but also for more complicated languages, such as Planner. It still cannot be tuned for Prolog because the reader uses whitespace to separate list elements, while Prolog uses commas. This is a subject for further work.
В· There are also some minor fixes.

System Requirements:

No special requirements.
Program Release Status:
Program Install Support: Install and Uninstall

InteLib Tags:

Click on a tag to find related softwares

Is InteLib your software?

Manage your software

Most Popular

linux default icon GDB 7.4
GDB, the GNU Project debugger, allows you to see what is going on `inside' another program while it... Read more
linux default icon Coral 0.9.1
Coral is a tool and a development platform to create and transform models and modeling languages.
linux default icon Forum Paid Plus Script 6.1
Forum Paid Pay Per Post Exchange is targeted at forum owners who wish to...
linux default icon sdo 0.6.5
Converts oracle SDO_GEOMETRY objects to WKT and GeoJSON.
linux default icon Get Paid Plus Script 6.1
Get Paid Plus Script

Related Category

» Other (877)
» Tools & Editors (359)
» Web Development (146)