Я хочу начать работу над небольшим компилятором, и для его создания я колеблюсь между несколькими разными языками.
Мои требования просты, я хочу иметь возможность генерировать код LLVM-IR, потому что у меня есть бэкэнд LLVM, который я хотел бы повторно использовать для целевой платформы.
Итак, прямо сейчас у меня есть следующие варианты:
Использовать OCaml и привязки LLVM - Эффективно, LLVM поставляется с привязками OCaml, но опыт программирования с OCaml (IDE, поддержка) не самый лучший.
Используйте привязки C / C ++ и LLVM - я бы сказал, наиболее очевидный способ: но я хотел бы использовать функциональный язык, поскольку эта тема для меня нова, и я хочу изучить что-то новое.
Используйте F # - я влюбился в этот язык, но официальных привязок LLVM нет. Думаю, я мог бы сделать то же самое с помощью System.Reflection.Emit. Хотя кажется, что здесь есть инициатива по привязке F # для LLVM - https://github.com/keithshep/llvm-fs
, я хотел бы узнать ваше мнение по этому поводу.