LINUX.ORG.RU

История изменений

Исправление den73, (текущая версия) :

Речь даже не о Runtime exception, потому что речь идёт не об использовании Racket, а о его расширении. Если я делаю «свой 1С», то логично начать со среды DrScheme или как её там называют, как с фундамента: редактор, отладчик, библиотека ГПИ. Допустим, я хочу добавить к этому набору таблицу (grid) для вывода данных. Этот код как бы станет частью DrRacket и тем самым попадёт под LGPL. Во всяком случае такая ситуация с EMACS. GPL заражает абсолютно весь код на el. Поэтому сервер SLIME под public domain, а клиент - под GPL. Именно по этой причине я сразу отказался от возможности использовать EMACS в своих разработках в качестве среды разработки. Может быть я что-то не понял насчёт лицензии. Но даже в случае LLGPL может быть проблема, если я пытаюсь распространять образ, содержащий LLGPL библиотеку, сохранённый с помощью save-image.

Относительно mapcar. Наш ведь интерпретатор тоже его не понимает, верно?

(defun inner (x) (print x) (ew:suspend-request))
(ew:my-eval '(mapcar 'inner '(1 2 3)))
==>
error: suspend-request должен быть в интерпретируемом коде
Тогда наверное чтобы поддерживать mapcar и обойтись без CPS - это только разобраться в устройстве стека и лямбд и научиться их осознанно копировать, обходя все ссылки и предпринимая нужное действие для каждой из них. Возможно, что SBCL это даже вовсе не умеет, потому что у него для стеков консервативный сборщик мусора. Т.е., видимо, SBCL не знает, что у него на стеке. CCL должен уметь.

Исходная версия den73, :

Речь даже не о Runtime exception, потому что речь идёт не об использовании Racket, а о его расширении. Если я делаю «свой 1С», то логично начать со среды DrScheme или как её там называют, как с фундамента: редактор, отладчик, библиотека ГПИ. Допустим, я хочу добавить к этому набору таблицу (grid) для вывода данных. Этот код как бы станет частью DrRacket и тем самым попадёт под LGPL. Во всяком случае такая ситуация с EMACS. GPL заражает абсолютно весь код на el. Поэтому сервер SLIME под public domain, а клиент - под GPL. Именно по этой причине я сразу отказался от возможности использовать EMACS в своих разработках в качестве среды разработки. Может быть я что-то не понял насчёт лицензии. Но даже в случае LLGPL может быть проблема, если я пытаюсь распространять образ, содержащий LLGPL библиотеку, сохранённый с помощью save-image.

Относительно mapcar. Наш ведь интерпретатор тоже его не понимает, верно?

(defun inner (x) (print x) (ew:suspend-request))
(ew:my-eval '(mapcar 'inner '(1 2 3)))
==>
suspend-request должен быть в интерпретируемом коде
Тогда наверное чтобы поддерживать mapcar и обойтись без CPS - это только разобраться в устройстве стека и лямбд и научиться их осознанно копировать, обходя все ссылки и предпринимая нужное действие для каждой из них. Возможно, что SBCL это даже вовсе не умеет, потому что у него для стеков консервативный сборщик мусора. Т.е., видимо, SBCL не знает, что у него на стеке. CCL должен уметь.