Представлен LISP/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;}

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.