Увидел свет транслятор LISP/c. Инструмент ставит целью объединение выразительной силы языка Common Lisp и скорости языков C/C++, что позволяет воспользоваться мощным механизмом Lisp-макросов для генерации текста программ на C. В трансляторе реализована поддержка pthreads, MPI и CUDA. Поддерживается создание классов и шаблонов C++. В данный момент реализация LISP/c протестирована и может работать с использованием CLISP.
Примеры:
1. Hello World
(header stdio)
(main
(@printf (str "Hello, world!"))
(return 0))
транслируется в
#include ‹stdio.h›
int main(int argc,char **argv)
{
printf("Hello, world!");
return 0;
}
2. Макросы
(templates make-foo (typ)
(func (add/sym foo- typ) typ ((x typ) (y typ))
(return (+ x (* y 2)))))
(make-foos int long float double)
транслируется в
int foo_int(int x, int y) {return x + y * 2;}
long foo_long(long x, long y) {return x + y * 2;}
float foo_float(float x, float y) {return x + y * 2;}
double foo_double(double x, double y) {return x + y * 2;}
