вроде бы тут дело просто в том, что А идет перед В
если они в разных файлах то mix сам строит дерево вызовов и в таком порядке компилирует. Насчет расположения нескольких модулей в одном файле это вообще скользкий вопрос и лучше, по возможности, так не делать