При написании компилятора (как и многого другого) важнее модульность, ИМХО, иначе сам же запутаешься и завязнешь в лапше, так и не доведя проект до работоспособности. Haskell позволяет дёшево (в смысле затрат собственного времени) обеспечить очень высокий уровень модульности и композабельности через стеки монад/свободные монады/final tagless. OCaml позволяет добиться сравнимых результатов за счёт первоклассных модулей и функторов между ними.
Но если всё, что Вы знаете — это ООП, то всё это великолепие, конечно, не релевантно...