> 1 <

Автор Сообщение

packa

Members


Статус

2 сообщений

Где: Russia
Род занятий:
Возраст:

#7011   2013-05-01 17:41 GMT+3 часа(ов)      
Здарвствуйте!

Очень хочется создать DLL на scheme.
Суть - написать ядро вычислений на scheme, чтобы потом использовать их в программе на языке с++ (которая собственно будет больше оформлением для программы на scheme)

Какой либо информации касательно этого не нашел, поэтому прошу совета у вас.

skelter

Members


Статус

34 сообщений

Где: ---
Род занятий:
Возраст:

#7012   2013-05-02 15:00 GMT+3 часа(ов)      
Очевидно, нужно смотреть документацию к конкретным реализациям. Например, Gambit может компилировать в портабельный C; наверно, и DLL можно скомпилировать.

snv

Members


Статус

25 сообщений
http://sym.at.ua/load
Где: Russia Серпухов
Род занятий: Безработный
Возраст: 31

#7035   2013-05-29 19:27 GMT+3 часа(ов)      
Можешь организовать обмен данными через сокеты или shared-memory. Т.е. DLL, написанная на обычном C/C++, запускает backend Lisp-систему и дальше только отправляет ей запросы. По-типу OpenGL.
The hour will come in which all the peoples of the earth will awake, and the Jews will be the victims. -- Joseph Goebbels, 21 January 1945

misha

Moderators


Статус

1273 сообщений
http://racket-lang.org/
Где: Yemen
Род занятий:
Возраст:

#7238   2014-01-16 23:15 GMT+3 часа(ов)      
Цитата
Суть - написать ядро вычислений на scheme, чтобы потом использовать их в программе на языке с++ (которая собственно будет больше оформлением для программы на scheme)
Странно, ведь обычно требуется наоборот. Сначала пишется низкоуровневый код на Си, а затем компилируется совместно с scheme кодом.
Кстати, racket имеет хороший C API, так что можно писать и использовать нативные модули(dll) без возни с ffi.

PACTBOP_KOBAPEH

Members


Статус

11 сообщений

Где: Russia
Род занятий:
Возраст:

#7266   2014-02-08 01:15 GMT+3 часа(ов)      
Я нагуглил только Embeddable Common Lisp и VSLisp Embedded Lisp Interpreter. Мне тоже хотелось бы использовать Scheme как встраиваемый язык вместо Lua или AngelScript.

P.S. Нашел несколько "внедряемых" Scheme - TinyScheme, KSi, Bigloo. Больше всего приглянулся последний. Очень живой (последнее обновление меньше полугода назад) и матерый (версия 4.0, а не 0.4 какая-нибудь). Пример модуля, притворяющегося DLL на C: http://www-sop.inria.fr/indes/fp/Bigloo/bigloo-11.html#C-Example

отредактировал(а) PACTBOP_KOBAPEH: 2014-02-08 05:47 GMT+3 часа(ов)

misha

Moderators


Статус

1273 сообщений
http://racket-lang.org/
Где: Yemen
Род занятий:
Возраст:

#7269   2014-02-10 20:58 GMT+3 часа(ов)      
Цитата
Мне тоже хотелось бы использовать Scheme как встраиваемый язык вместо Lua или AngelScript.
А может проще написать собственный интерпретатор? А то ведь полноценная реализация потащит за собой лишние мегабайты.

PACTBOP_KOBAPEH

Members


Статус

11 сообщений

Где: Russia
Род занятий:
Возраст:

#7271   2014-02-12 15:00 GMT+3 часа(ов)      
Мегабайты меня не волнуют, 21 век на дворе. Программа пишется чисто под себя, так что удобство развертывания тоже не волнует. А главная проблема - хочу удобную IDE. Все Лиспы и Схемы, какие я пока видел (Gambit-C, CLISP, LispWorks) убоги до невозможности. Конечно, можно писать в Sublime Text и скармливать компилятору, но это с любым языком можно делать. А как же хваленый REPL? Где он тут? Сейчас вот только что скачал Allegro CL, если и он не устроит, в папке "Загрузки" останется только Haskell.

misha

Moderators


Статус

1273 сообщений
http://racket-lang.org/
Где: Yemen
Род занятий:
Возраст:

#7276   2014-02-12 16:58 GMT+3 часа(ов)      
Цитата
Мегабайты меня не волнуют, 21 век на дворе.
А скорость загрузки(boot time) приложения вас волнует?
Цитата
А главная проблема - хочу удобную IDE.
Судя по вашим запросам, такую еще не изобрели. Можете посмотреть в сторону DrRacket, но навряд ли она вас впечатлит.
Цитата
А как же хваленый REPL? Где он тут?
Удивительно, как вы до него еще не дошли. Ведь он есть везде. Даже в VS, только называется иначе.
Цитата
останется только Haskell.
У него ide такое же убогое г...

PACTBOP_KOBAPEH

Members


Статус

11 сообщений

Где: Russia
Род занятий:
Возраст:

#7279   2014-02-12 22:15 GMT+3 часа(ов)      
Цитата
misha :
Цитата
Мегабайты меня не волнуют, 21 век на дворе.
А скорость загрузки(boot time) приложения вас волнует?


Ни в малейшей степени. Пусть хоть полчаса загружается. Я серьезно.

Цитата
Цитата
А главная проблема - хочу удобную IDE.
Судя по вашим запросам, такую еще не изобрели. Можете посмотреть в сторону DrRacket, но навряд ли она вас впечатлит.


Идея! А что, если использовать DrRacket только как IDE? А программировать на Scheme R5RS? И потом компилировать с помощью Chicken или Gambit? И как я сразу не допёр...

Цитата
Цитата
А как же хваленый REPL? Где он тут?
Удивительно, как вы до него еще не дошли. Ведь он есть везде.


Да-да, везде. Даже в CLIPS. Только им пользоваться невозможно. Кнопочки Home, End и даже Del не работают. Спасибо, но я знаю другие способы мазохизма.

Цитата
Даже в VS, только называется иначе.


Вы имеете в виду F# Interactive? Да, есть такая штука. И даже очень удобная. Нажал Alt-Enter и вуаля! Это Вам не копирование из Sublime Text в консольное окно CLIPS.

Цитата
Цитата
останется только Haskell.
У него ide такое же убогое г...


Причем это наименьшая из его проблем.

misha

Moderators


Статус

1273 сообщений
http://racket-lang.org/
Где: Yemen
Род занятий:
Возраст:

#7281   2014-02-15 13:54 GMT+3 часа(ов)      
Цитата
Идея! А что, если использовать DrRacket только как IDE? А программировать на Scheme R5RS? И потом компилировать с помощью Chicken или Gambit? И как я сразу не допёр...
Вот только зачем?
Цитата
Да-да, везде. Даже в CLIPS. Только им пользоваться невозможно. Кнопочки Home, End и даже Del не работают. Спасибо, но я знаю другие способы мазохизма.
Сомнительные неудобства. Собственно репл не за это любят.
Цитата
Это Вам не копирование из Sublime Text в консольное окно CLIPS.
Все используют emacs+slime.

rv82

Members


Статус

46 сообщений
http://rv82.ya.ru
Где: Russia
Род занятий:
Возраст:

#7289   2014-02-22 13:39 GMT+3 часа(ов)      
Цитата
P.S. Нашел несколько "внедряемых" Scheme - TinyScheme, KSi, Bigloo. Больше всего приглянулся последний. Очень живой (последнее обновление меньше полугода назад) и матерый (версия 4.0, а не 0.4 какая-нибудь). Пример модуля, притворяющегося DLL на C: http://www-sop.inria.fr/indes/fp/Bigloo/bigloo-11.html#C-Example

Писать DLL, подключаемые к Си-программам можно и на Chicken'е. Сам пробовал.
Предпочитаю Chicken (не говоря о Racket), т.к. где-то читал, что из всех "внедряемых" реализаций, у него наилучший сборщик мусора, наиболее хорошо подходящий языку Scheme. Ну и конечно же, большой репозиторий сторонних модулей.

PACTBOP_KOBAPEH

Members


Статус

11 сообщений

Где: Russia
Род занятий:
Возраст:

#7391   2014-06-07 12:20 GMT+3 часа(ов)      
rv82, если не секрет, как организовали работу с Chicken? Каким редактором пользуетесь, как программу на функции разбиваете, как корректность функций тестируете? Я еще и на С программирую, и у меня такая манера: каждая функция в отдельном файле, к ней тестилка - тоже в отдельном файле. Как-то так:

// without_zeros.c
#ifndef WITHOUT_ZEROS
#define WITHOUT_ZEROS
 
void without_zeros(double* z, size_t n)
{
while( n-- ) {
if( *z == 0.0 ) {
*z = 0.0001;
}
++z;
}
}
 
#endif


// test_without_zeros.c
#include "without_zeros.c"
 
TEST empty_array()
{
double* z = NULL;
n = 0;
without_zeros(z, n);
PASS();
}
 
TEST one_non_zero_element()
{
double non_zero_element = 1.0;
double z[1];
z[0] = non_zero_element;
without_zeros(z, sizeof(z) / sizeof(z[0]));
ASSERT_EQ(z[0], non_zero_element);
PASS();
}
 
TEST one_zero_element()
{
double z[1] = { 0.0 };
without_zeros(z, sizeof(z) / sizeof(z[0]));
ASSERT(z[0] > 0.0 && z[0] < 1.0);
PASS();
}
 
// TODO: less trivial tests
 
SUITE(Without_Zeros)
{
RUN_TEST(empty_array);
RUN_TEST(one_non_zero_element);
RUN_TEST(one_zero_element);
// TODO: run less trivial tests
}


Кошмар, да? Сам язык очень нравится (обратите внимание, как красив и лаконичен код функции without_zeros), но угнетает необходимость долго и муторно все это оформлять.
> 1 <


Онлайн :

0 пользователь(ей), 13 гость(ей) :




Реклама на сайте: