Некоторые функции действительно легко реализовать в OCaml (например, карта из списка), но вы можете использовать карту библиотеки OCaml: List.map
Однако мы можем задаться вопросом, какой код будет более эффективным. Вызов модуля отдельного модуля компиляции (библиотеки) может привести к потере некоторых возможных оптимизаций. В группе новостей fa.caml я прочитал, что при вызове функций из библиотек используются замыкания.
У меня есть код OCaml, который использует модули и функторы для общего программирования. По исторической причине мой код монолитен: все в одном файле. Теперь у меня больше времени, я готов разделить код на файлы для таких модулей. Тем не менее, я боюсь, что могу потерять производительность, потому что мне потребовалось некоторое время, чтобы понять это правильно. Например, у меня есть модули для упаковки сложных объектов с числами, поэтому я применяю уникальное представление и быстрое сравнение. Я использую эти обернутые объекты с общими картами, наборами и строю кеш на них.
Вопросы:
- Собираюсь ли я потерять производительность, если перейду к отдельным файлам?
- Проводит ли OCaml много оптимизаций в моем коде, полном модулей, функторов и т. Д.?
В C ++, если вы определяете метод класса в .h, компилятор может в конечном итоге включить короткие методы и т. Д. Возможно ли добиться этого в OCaml, используя отдельные файлы?