Есть некоторое внутреннее API, которое хочется «оживить» с помощью настоящего языка программирования, ибо конвейеры из grep/sed/awk с cli-тулзой тяжелы в написании/понимании/эксплуатации. В связи с этим хочется иметь язык, в который я впихну имеющиеся вызовы, красиво их оберну и буду наслаждаться использованием.
Но есть одна проблема: я не хочу терять очень удобный cli с автокомплитом, который я таки наваял, но также я не хочу переизобретать cli для языкового биндинга.
В идеале хотелось бы, чтобы язык: - имел именованные параметры у функций - имел консольный REPL с историей с действительно умным дополнением (в частности, предлагал эти самые именованные параметры) - имел выразительные структуры данных (вот по этому пункту лисп с его s-exp'ами явный фаворит, т. к. через keyword'ы + s-exp выражается практически вся моя предметная область) - дружил с C++ (желательно без swig, т. к. на моей памяти отображение 1-в-1 ни разу не выглядело «родным и удобным» для целевого языка) на самом примитивном уровне: временем жизни плюсовых объектов я хочу управлять сам
О чем слышал:
- для python-а есть ipython, с двумя вариантами: браузерная и qt-шная консоль — выглядит вкусно, но в ssh с таким не побалуешь
- для lisp-а есть slime, однако комплит в нем подозрительно тупой:
во-первых, arg-1 и arg-2 не предлагаются к дополнению внутри функции (точнее говоря, предлагается куча разного всякого г-на, на фоне которых аргументы теряются) во-вторых, при вызове этой функции keyword-ы для именованных аргументов также предлагаются в последнюю очередь
(defun my-sum (&key arg-1 arg-2) (+ arg-1 arg-2)) (my-sum :arg-1 1 :arg-2 2)
В каком направлении можно покопать? Или плюнуть на все, писать свой парсер для s-exp'ов к readline и костылить нужное мне дополнение полностью вручную (выглядит жуть как геморно, я лучше с sed/grep/awk посношаюсь)?