to post messages and comments.

Народ, кроссплатформенный gui на common Lisp / Scheme — реально ли (Linux/Windows, Mac OS не обязательно)? Хочу поучиться/пописать в своё удовольствие

Вот, думаю начать младшего брата постепенно учить программированию. Решил начать со схемы (заодно и сам поучу), поставил Racket. Изначально думал взять SICP (который я уже прочёл и знаю, что он крут), но на сайте Racket увидел рекоммендацию взять "How to Design Programs, Second Edition". Решил пока что с неё и начать, но что-то мне подсказало, что на английском будет учить крайне сложно, и всё-таки лучше начать учить по-русски.

Собственно, вопросы:
1. что делать?
2. есть ли "How to Design Programs" на русском?
3. насколько сумасшедшей считается идея попробовать перевести эту книгу на русский постепенно?

Спасибо!

Гигиеническое макро, дабы заставить вычислять подвыражения в форме по порядку (по стандарту он не определен)
(order форма)
(define-syntax order
  (er-macro-transformer
   (lambda (exp rename compare)
     (let* ((bind-list
             (map
              (lambda (f)
                `(,(gensym) ,f))
              (cadr exp)))
            (vars-list (map car bind-list))
            (lr (rename 'let*)))
       (list lr bind-list vars-list)))))

Вот это я понимаю название для проекта:

Stalin brutally optimizing Scheme compiler.
Stalin — a STAtic Language ImplementatioN
Finally, a Lisp compiler that does what it should...
github.com

Впрочем, если пройти по ссылкам оттуда на университетскую страницу товарища Jeffrey Mark Siskind из Purdue University, то можно увидеть там Screamer и Abigail (ничего не могу поделать, навевает мысли о персонажах фильмов Лючио Фульчи).

Есть однако и Stalingrad (записывается как Stalin и оператор градиента):

bcl.hamilton.ie
функциональный фреймворк, что представляет reverse-mode AD (automatic differentiation) как first-class function в ФЯ, а потом они и до HOF добираются. Wiki говорит, что AD, дескать, не symbolic differentiation и не numerical differentiation, свободно от проблем этих методов со сложностью по времени и ошибками округления. Сам я pdf просмотрел по диагонали, на 18й наткнулся на Church encoding, когда они true, false, if-then-else, car, cdr и прочее перемололи на лямбде, и читать по диагонали стало сложнее.

Всё это уже кому-то на глаза попадалось, но пусть будет и здесь.

"Scheme 9 from Empty Space: A Guide to Implementing Scheme in C, 2nd ed"
t3x.org

Free pdf of the 1st ed of "Scheme 9 From Empty Space"
bcl.hamilton.ie

"Logic Programming in Scheme" (zip w/ pdf)
[this work has been greatly influenced by the book "The Reasoned Schemer" by Daniel P. Friedman, et al.]
bcl.hamilton.ie

Montreal Scheme/Lisp User Group
"The 90 Minute Scheme to C compiler by Marc Feeley"
iro.umontreal.ca

и чтобы два раза не вставать Advanced Compilers Reading Lists из Univ. of California, San Diego [UCSD]
keywords: Compiler Correctness, Pointer Analysis, Error Detection [... for C-level Langs], Concurrency
преимущественно статьи c POPL и PLDI с 1999 по 2011 год
cseweb.ucsd.edu

...ОБЕСПЕЧИТЬ ГИГИЕНУ

ПРИШЛО ВРЕМЯ ОБЕСПЕЧИТЬ ГИГИЕНУ
ГИГИЕНА САМА НЕ ОБЕСПЕЧИТСЯ
ТРАНСФОРМИРУЙ СИНТАКСИС, ТРАНСФОРМИРУЙ ЕГО ЕЩЕ РАЗ
ЗАЧЕМ МНЕ DEFMACRO, У МЕНЯ НЕТ ВРЕМЕНИ ЧТОБЫ ЕБАТЬСЯ С НИМ
ЛУЧШЕ ЕЩЕ РАЗ ОБЕСПЕЧИТЬ ГИГИЕНУ
Я ЗАНИМАЮСЬ ГИГИЕНОЙ ПО 3 РАЗА В ДЕНЬ
КАЖДЫЙ СЕАНС ЗАНИМАЕТ ДВАДЦАТЬ МИНУТ
Я ЖИВУ АКТИВНОЙ И ПОЛНОЦЕННОЙ ЖИЗНЬЮ
Я УСПЕШЕН, ПОЭТОМУ ЦЕЛЫЙ ДЕНЬ ЗАНИМАЮСЬ ГИГИЕНОЙ
А ПОСЛЕ ЭТОГО ПИШУ НА LINUX.ORG.RU
ТУПЫЕ ОБЩЕЛИСПЕРЫ ОДЕРЖИМЫ DEFMACRO
А Я СВОБОДНЫЙ ОТ DEFMACRO ЧЕЛОВЕК
СКАЧАТЬ БЕСПЛАТНО И БЕЗ РЕГИСТРАЦИИ МОКРЫЙ RACKET REFERENCE
КРЯК УЛЬТИМАТ КЕЙГЕН РАЗБЛОКИРУЙ MAYBE
SYNTAX-LOCAL-MAKE-DELTA-INTRODUCER LOCAL-TRANSFORMER-EXPAND/CAPTURE-LIFTS
(DATUM->SYNTAX (SYNTAX->DATUM (DATUM->SYNTAX (SYNTAX->DATUM helper-stx))))
ЛУЧШЕ Я ТРАНСФОРМИРУЮ СИНТАКСИС ЕЩЁ РАЗ
И ЗАБУДУ DEFMACRO, ОШИБКИ МНЕ НЕ НУЖНЫ
Я НЕ ЗАНИМАЛСЯ ГИГИЕНОЙ УЖЕ НЕДЕЛЮ
ПОЙДУ ЗАЙМУСЬ
В SYNTAX-CASE ВСЕ ПРОСТО И ПОНЯТНО
НУЖНО ТРАНСФОРМИРОВАТЬ СИНТАКСИС. ЭТО ЖЕ ОЧЕВИДНО КАК ЭТО РЕШИТЬ
ПРИШЛО ВРЕМЯ ОБЕСПЕЧИТЬ ГИГИЕНУ
КОКОКОКОКОКОКО
(syntax-parse #'1 2) -> readline-input::236: ?: bad syntax in: 2
КОКОКОКОКОКОКО

*gnu
оффициальный тутор по guile: <gnu.org>
только дошел до запускания хоть чего-то (2.2 Testing it out), сразу
нихрена не работает:
1. чтобы оно собралось, надо в Makefile надо в LIBS добавить -lm
2. gnuplot тихо и мгновенно завершается
2.1. нужно в start_gnuplot() заменить
-execlp ("gnuplot", NULL);
+execlp ("gnuplot", "gnuplot", "-p", NULL);
2.2. все равно не работает. нужно еще убрать нахрен
— fprintf (global_output, "clear\n");
из tortoise_reset().
видимо gnuplot после таких команд не только картинку чистит, но и настройки забывает.

что же будет когда таки до гайла дойдем?..
(наверное здесь отпишусь, если будет еще говн)

head /etc/ardour2/ergonomic-us.bindings
; ardour GtkAccelMap rc-file         -*- scheme -*-
; this file is an automated accelerator map dump
;
; (gtk_accel_path "<Actions>/RegionList/RegionListSort" "")
(gtk_accel_path "<Actions>/Common/Quit" "<Ctrl>q")
(gtk_accel_path "<Actions>/Common/Save" "<Ctrl>s")
; (gtk_accel_path "<Actions>/Editor/Pullup" "")
; (gtk_accel_path "<Actions>/Editor/zoom-to-session" "")
; (gtk_accel_path "<Actions>/JACK/JACKReconnect" "")
; (gtk_accel_path "<Actions>/Editor/Autoconnect" "")


например

Чят, реквестирую понятный и простой код реалици continuations (продолжения)
в scheme или ruby (или где там еще у нас еще есть полноценные) ?

Лучше scheme, наверно, потому что существует 100500 велосипедных интерпретаторов.

$ s emerge -av scheme2c

 * IMPORTANT: 10 news items need reading for repository 'gentoo'.
 * Use eselect news to read news items.


These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild  N     ] dev-lang/ghc-7.0.4  USE="bash-completion -binary -doc -ghcbootstrap -llvm" 104,062 kB
[ebuild  N     ] app-admin/haskell-updater-1.2.0.5  23 kB
[ebuild  N     ] dev-haskell/syb-0.3.6  USE="-profile -test" 38 kB
[ebuild  N     ] dev-haskell/cabal-1.10.2.0  USE="-doc -profile" 251 kB
[ebuild  N     ] dev-haskell/parsec-2.1.0.1  USE="-doc -profile" 16 kB
[ebuild  N     ] dev-haskell/zlib-0.5.3.2  USE="-doc -hscolour -profile" 123 kB
[ebuild  N     ] dev-haskell/terminfo-0.3.2.3  USE="-doc -hscolour -profile" 41 kB
[ebuild  N     ] dev-haskell/mmap-0.5.7  USE="-doc -hscolour -profile" 9 kB
[ebuild  N     ] dev-haskell/html-1.0.1.2  USE="-doc -profile" 11 kB
[ebuild  N     ] dev-haskell/tar-0.3.2.0  USE="-doc -hscolour -profile" 16 kB
[ebuild  N     ] dev-haskell/transformers-0.2.2.0  USE="-doc -hscolour -profile" 17 kB
[ebuild  N     ] dev-haskell/utf8-string-0.3.7  USE="-doc -hscolour -profile" 9 kB
[ebuild  N     ] dev-haskell/deepseq-1.1.0.2  USE="-doc -hscolour -profile" 4 kB
[ebuild  N     ] dev-haskell/binary-0.5.0.2  USE="-doc -hscolour -profile" 41 kB
[ebuild  N     ] dev-haskell/dataenc-0.14.0.2  USE="-doc -hscolour -profile" 13 kB
[ebuild  N     ] dev-haskell/mtl-2.0.1.0  USE="-doc -hscolour -profile" 14 kB
[ebuild  N     ] dev-haskell/network-2.3.0.7  USE="-doc -hscolour -profile -test" 131 kB
[ebuild  N     ] dev-haskell/text-0.11.1.12  USE="-doc -hscolour -profile -test" 118 kB
[ebuild  N     ] dev-haskell/regex-base-0.93.2  USE="-doc -profile" 9 kB
[ebuild  N     ] dev-haskell/hashed-storage-0.5.7  USE="-doc -hscolour -profile -test" 56 kB
[ebuild  N     ] dev-haskell/http-4000.1.2  USE="-doc -hscolour -profile" 59 kB
[ebuild  N     ] dev-haskell/haskeline-0.6.4.6  USE="-doc -hscolour -profile" 61 kB
[ebuild  N     ] dev-haskell/regex-posix-0.95.1  USE="-doc -hscolour -profile" 42 kB
[ebuild  N     ] dev-haskell/regex-compat-0.95.1  USE="-doc -hscolour -profile" 4 kB
[ebuild  N     ] dev-vcs/darcs-2.5.2  USE="bash-completion -doc -hscolour -profile -test" 1,204 kB
[ebuild  N    *] dev-lang/scheme2c-9999::sunrise  USE="X -doc" 0 kB

Total: 26 packages (26 new), Size of downloads: 106,363 kB


танунахуй!

вставляем в ~/.xbindkeys.scm

(use-modules (system repl server))
(spawn-server)

и наслаждаемся удалённым repl (например через geiser)
Единственная проблема — для того, чтобы заставить использовать нововведенный биндинг, помимо (grab-all-keys) почему-то требуется нажатие любой из определённых ранее комбинаций клавиш.

p.s. xbindkeys должен быть собран с guile > 2.0

Кстати, новый Racket вышел:

* Новая библиотека `db', предоставляющая высокоуровневый интерфейс к популярным РСУБД: MySQL, SQLite, PostgreSQL, а также другим через ODBC.

* Новая коллекция XREPL, предоставлящая вспомогательные команды для цикла чтения-выполнения-печати (REPL) Racket. Она будет полезна людям, которые используют консольную версию Racket и альтернативные редакторы.

* Коллекция `plot' переписана на Racket, теперь она поддерживает вывод в PDF,логарифмические оси, гистограммы и многое другое.

* Typed Racket:
Typed Racket предоставляет средства для статической отладки производительности: показывается какой код будет оптимизирован, а какой нет.
Более интуитвные типы в выводе REPL и сообщениях об ошибках.
Поддерживается определение функций с необязательными аргументами с таким же синтаксисом, как в Racket.

Внуртренние определения теперь имеют семантику `let' если не содержат обратных ссылок, это исключает потерю проиводительности при использовании внутренних определений вместо `let' и изменяет смысл программ, которые захватывают продолжения во внутренних определениях. Использование внутренних определений теперь считается предпочтительным стилем.

Чем больше решаю SICP на scheme, тем больше он мне нравится.
Вот только скобки эти, блин. Постоянно путаю их и потому
кучу времени пытаюсь разобраться в cryptic error messages.
paredit что ли заюзать?