Взаимно рекурсивные языки тоже можно сделать. Держать придется в одном модуле, как и интерпретаторы. Других ограничений нет. Но я бы воздержался, юз кейс неясен.
Саморекурсивные языки - тоже не проблема, и даже можно применить для очень интересных вещей
ну так вот, а есть такая штука как индексированные рекурсивные схемы и позволяют писать взаимнорекурсивные конструкции без рекурсий, только оперируя базовыми функторами, так что вот с фры монадами тут думаю будет затык)