Представлен LISP/c - транслятор Common Lisp в C/C++
Увидел свет транслятор 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;}
© OpenNet