Анонс здесь http://ecovillage.narod.ru/energy/stirling/stirling.htm
Архив с файлами проекта и описанием - здесь http://ecovillage.narod.ru/energy/stirling/stir-2015-01-27.rar
Тем, кого не интересуют двигатели Стирлинга, могут быть интересны библиотеки и метод их использования.
Массированно используется следующее:
- символ-ридмакросы. Например, доступ к массиву пишется так [ массив . индексы ]
При этом \[ - это символ в определённом пакете, а не macro-char. Так что ничто не мешает
определить в другом пакете другой смысл для [ , или в этом же пакете константу [cm].
- локальные никнеймы пакетов.
- использование пакета dspec в лиспворксе, к-рый позволяет
"скакать" на определение пакета, системы и многих других сущностей с помощью команды
редактора Find Source
- perga - макрос для более "плоского" кода с меньшим количеством скобок и с типизацией
- defun-to-file - сгенерированный код теперь может иметь своё место на диске, чтобы было легче
разобраться в работе программы. Потому что одно дело - сгенерировать функцию на лету и потом
её исходник исчезнет, а совсем другое - когда этот исходник сохранён в файле и в него можно попасть
через отладчик или через find-source.
- var^Slot, что то же самое, что и (^ var "Slot"), для доступа к полям структур.
Согласитесь, var^slot - гораздо компактне, чем (my-struct-slot var). Операция: "крышка" умеет довольно много. Например,
если var - локальная переменная декларированного типа, то превращение в my-struct-slot
превращается во время компиляции. Если нет - то во время исполнения берётся slot-value.
Можно настраивать поведение "крышки" в зависимости от того, что стоит слева от крышки и в каком
месте кода она помещена.
- (eq 'CamelCaseSymbol '|CamelCaseSymbol|), а (eq 'uni-case-symbol 'UNI-CASE-SYMBOL)
что позволяет плавно переходить от стандартного
- переопределён какой-то метод в asdf. Теперь можно открывать исходник проблемного файла и его системы прямо из
отладчика (asdf:e и asdf::ep). Всё это теперь работает с последним релизом asdf.
- команда :e в редакторе и раскраска по уровням вложенного read помогают при диагностике ошибок
чтения (например, лишняя закрывающая скобка или неуместная запятая).
Ну и разное:
- пример вывода графиков на чистом лиспе (код не мой, но я долго его искал и немного исправлял)
- вроде бы годный решатель диффуров из малоизвестной библиотеки http://cliki.net/Mitch%27s%20LISP%20Mathematical%20Library
- символное дифференцирование (пока может мало, но для данной задачи хватило).
- небольшая, но обещающая расти библиотечка для расчёта теплообмена и гидравлического сопротивления
в теплообменниках