LINUX.ORG.RU

Common Lisp: изживаем GPL


0

1

Здравствуйте! В clocc/src/port/sys имеется функция

(defun variable-special-p (symbol)
  "Return T if the symbol names a global special variable."
  #+(and allegro (not (version>= 6))) (clos::variable-special-p symbol nil)
  #+(and allegro (version>= 6)) (excl::variable-special-p symbol nil)
  #+clisp (sys::special-variable-p symbol)
  #+cmu (walker:variable-globally-special-p symbol)
  #+gcl (si:specialp symbol)
  #+lispworks (eq :special (hcl:variable-information symbol))
  #+lucid (system:proclaimed-special-p symbol)
  #+sbcl (sb-walker:var-globally-special-p symbol)
  #-(or allegro clisp cmu gcl lispworks lucid sbcl)
  (error 'not-implemented :proc (list 'variable-special-p symbol))) 
есть ли аналоги, не покрытые GPL?

★★★★★

Сначала скажи, что должно мотивировать поощрять потенциально проприетарный код.

Chaser_Andrey ★★★★★ ()

Ого. Реальный код на лиспе. Такой же отвратительный, как и везде.

baverman ★★★ ()
Ответ на: комментарий от baverman

Такой же отвратительный, как и везде.

он не просто отвратительный - он еще и костыльный

anonymous ()
Ответ на: комментарий от baverman

Ого. Реальный код под GPL. Такой же отвратительный, как и везде.

Fixed

anonymous ()

Это тривиальная функция. Тут разве что порядок строк поменять можно.

r2d2 ()

Зачем такие желтые заголовки в development?

alienclaster ★★ ()

Люто-бешено напиши под хардкорно-брутальной проприетарной лицензией. И ещё добавь: «Да! Так вот, мол.»

Xenesz ★★★★ ()

Два упорото-сектантских фанатизма нашли друг друга: LISP и неприятие GPL.

anonymous ()

Напиши сам, лол.

anonymous ()
Ответ на: комментарий от r2d2

Она не тривиальна, т.к. нужно было собрать implementation-specific реализации.

den73 ★★★★★ ()
Ответ на: комментарий от den73

Ну, дак собери. А как ты по другому напишешь #+sbcl (sb-walker:var-globally-special-p symbol) ?

Выкинь строки с лиспами, которые ты не используешь.

Вот ещё пример:

(defun program-args ()
  (or
   #+SBCL (rest *posix-argv*)
   #+CLISP *args*
   ;#+ECL (ext:command-args)
   ;#+CMU extensions:*command-line-words*
   ;#+LISPWORKS system:*line-arguments-list*
   nil))

r2d2 ()
Ответ на: комментарий от den73

кто докажет, что для своей реализации, точно повторяющей реализацию из ОП-поста, ты их собрал не сам?

anonymous ()
Ответ на: комментарий от anonymous

Вопрос не в том, чтобы обойти лицензию, вопрос, чтобы было по-честному.

den73 ★★★★★ ()
Ответ на: комментарий от den73

бери ф-ю и используй. это будет по-честному.

anonymous ()
Ответ на: комментарий от anonymous

По-моему, тогда мне придётся лицензировать свой код под GPL. Или считать себя вором. Оба варианта меня не устраивают.

den73 ★★★★★ ()
Ответ на: комментарий от den73

По-моему, тогда мне придётся лицензировать свой код под GPL.

Вот когда тебя попросят пролицензировать под GPL, тогда и озаботишься. Сейчас тебе просто нужны эти *тривиальные* строчки, которые по другому просто не напишешь. Ведь так?

Второй вариант — объяснить автору clocc, что он идиот, раз решил лицензировать лисповый код под LGPL (непонятно, чего он этим хотел добиться). Видимо считал, что она более демократичная чем просто GPL.

baverman ★★★ ()
Ответ на: комментарий от baverman

Ладно, на самом деле, я вообще могу обойтись без этого кода на данном этапе, от clocc уже давно хотел отказаться, и это оказалось очень легко. Поэтому эту единственную функцию поместил в gpl-code.lisp.

Хотя тема не раскрыта...

den73 ★★★★★ ()
Ответ на: комментарий от den73

По-моему, тогда мне придётся лицензировать свой код под GPL. Или считать себя вором.

Не придется.

anonymous ()
Ответ на: комментарий от anonymous

Нда, видимо, я что-то круто недопонимаю.

По-моему, содержательная проделанная работа здесь - это сбор кусочков кода из разных реализаций. Как их не переставляй местами, содержание не изменится. Если автор кода лицензировал его LGPL, а я беру эти кусочки, то я должен лицензировать свой код LGPL. Или я должен найти более ранний вариант того же самого под более свободной лицензией (тем самым, под вопрос встаёт уже законность лицензирования данного кода LGPL). Третий способ - крепко зажмуриться, забыть увиденное и собрать эти кусочки заново самому.

Или нет?

den73 ★★★★★ ()
Ответ на: комментарий от den73

По-моему, содержательная проделанная работа здесь - это сбор кусочков кода из разных реализаций. Как их не переставляй местами, содержание не изменится.

Бред все это. Здесь никакой идеи/алгоритма в этом коде нет, просто набор того же самого из разных реализаций. Просто бери этот код и не заморачивайся.

gensym ★★ ()
Ответ на: комментарий от gensym
(defun special-variable-p (x)
    #+lispworks (eq :special (hcl:variable-information x))
    #+sbcl (sb-walker:var-globally-special-p x))

По другому-то никак не сделаешь.

gensym ★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.