LINUX.ORG.RU

IDE для R7RS Scheme

 , ,


0

2

Готовый сабж существует? Или появится только когда лично я его напишу?

А то отлаживать с помощью вручную натыкиваемых логов — боль и страдание. Пока пойду изобретать макрос define-traced.

★★★

Racket. Ибо нет других реализаций r7rs-big (да, в общем, и r7rs-small мало где реализован, например, в chibi)

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

Для Racket есть написанный R7RS? А то я видел только R6RS.

Chibi как раз и использую. Но только как REPL, писать отладчик пока лень.

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

Тогда, видимо, придется писать самому. Для емакса, к примеру.

buddhist ★★★★★ ()

IDE - это не лисп-way. Если приходят подобные мысли, пора задуматься о смене языка, а не того, в чем его редактировать.

anonymous ()

Ибо нет других реализаций r7rs-big

Я что-то пропустил? Разве есть спецификация r7rs large?

Puzan ★★★★★ ()

Подфиксил код, чтобы он работал с R6RS. Загрузил все свои 40 файликов в DrRacket, поставил свою бряку, нажал Debug. Теперь он меня спрашивает про каждый импортируемый модуль (~180 импортов), а надо ли ему его дебажить. Сириусли? И это лучшая IDE для Scheme?

Пока я клацаю по кнопке «Да, пожалуйста дебажь и этот файлик тоже» (и молюсь, чтобы оно не упало от недостатка памяти, когда таки запустится), вдруг кто-то знает, есть ли там спрятанный чекбокс «Заткнись и загрузи всё»? если нет, то есть ли workaround (кроме варианта свалить всё в один файл)? и куда можно написать фиче-реквест?

/cast monk

ilammy ★★★ ()
Ответ на: комментарий от ilammy
body1 body2 ... ) ) ) ) ) )

) )

У вас там модно что ли пробелы между каждой скобкой ставить + строки из одних скобок делать?

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

Заткнись и загрузи всё

Ты хочешь странного. Ты редактируешь все 180 модулей одновременно?

Основной метод отладки в Racket — помодульный. То есть отладил модуль, проверил что он всегда работает корректно, потом только начал его использовать.

Спрашивает он не про все импорты, а только про открытые файлы. Если что-то работает корректно, то закрой файл.

И да, рекомендуемый метод тестирования не Debug, а (module+ test ...). Как писал один умный человек: «если вам приходится работать со своей программой в режиме отладки, значит вы не имеете понятия, как она должна работать».

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

Ты хочешь странного. Ты редактируешь все 180 модулей одновременно?

Угу, я странный. Их 40, но они очень тесно связаны друг с другом. Рефлексивная система, как-никак; здесь всё от всего зависит.

Спрашивает он не про все импорты, а только про открытые файлы. Если что-то работает корректно, то закрой файл.

Если б только он позволял открывать новые файлы во время отладки...

Как писал один умный человек: «если вам приходится работать со своей программой в режиме отладки, значит вы не имеете понятия, как она должна работать».

Ага, именно что не понимаю. Потому и пошёл писать эту штуку — в качестве упражнения. И я не могу, к сожалению, удержать весь этот клубок объектов в голове одновременно.

И непонятно, как на него писать тесты. (Полезные) юниты из клубка не выделишь, а интеграционные тесты по идее дадут только бесполезные ответы «работает» / «не работает», которые ни разу не помогают понять, где именно и что не работает.

Энивей. Можно ли как-то в DrRacket настроить формат вывода значений в перечне локальных переменных? И есть ли возможность вычислить произвольное выражение в текущем окружении во время остановки? Второе вряд ли есть, я так понял («пиши тесты, step-by-step для дебилов»). Но вот первое очень хотелось бы: стандартный вывод объектов со ссылками на другие объекты и циклическими ссылками превращает всё в нечитаемую кашу.

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

Можно ли как-то в DrRacket настроить формат вывода значений в перечне локальных переменных

Определяй gen:custom-write

http://docs.racket-lang.org/reference/Printer_Extension.html

Их 40, но они очень тесно связаны друг с другом. Рефлексивная система, как-никак; здесь всё от всего зависит.

Зависит — да. Но конкретный баг всегда достаточно просто локализовать до модуля.

Можешь дать пример бага (с чем чейчас борешься?). Может я пойму, что не так (с отладкой в Racket или в твоём подходе).

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

Зависит — да. Но конкретный баг всегда достаточно просто локализовать до модуля.

Всё, я понял, что в моём подходе было не так. Я не догадался, что вот это — нажимабельная кнопочка, показывающая вменяемый бектрейс :facepalm:

Определяй gen:custom-write

Спасибо.

ilammy ★★★ ()

Scheme
IDE
Integrated Development Environment
Development
Scheme
Development
Scheme

Ты не понял. Scheme не предназначена для этого, она работает по-другому.

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