Так же как, чтобы написать приложение на жаве ты можешь пользоваться спрингом, а можешь не пользоваться, а можешь только на полшишки.
Чтобы написать либу, ты можешь использовать теоркатные построения для ядра библиотеки, для отдельных конструкций, или вообще без них обойтись
а что если в библиотеках вводить какое-то базовое исчисление и в него компилировать пользовательские термы? Типа дот <- скалка <- либ нейм калкулус <- юзерский код. Или я ща изобрел дсл