Использование ML в приложениях «реального мира»
-
20-08-2019 - |
Вопрос
Мне очень понравилось изучать ML в колледже. Я нахожу функциональное программирование часто освежающе элегантным способом написания определенных алгоритмов. Я слышал о F# и немного сыграл с этим. Тем не менее, я написал несколько интересных функций в ML и хотел бы интегрировать их как библиотеки, которые я мог бы использовать в других приложениях.
Обычно я вставляю свои функции в интерпретатора SMLNJ. Есть ли способ их составить?
Решение
Вам придется использовать что -то вроде Компилятор MLJ. Анкет Он собирает код байта Java. Или вы можете использовать Sml.net Компилятор для компиляции .NET IL.
Другие советы
Это часто среди Мл Для обеих сторон экспортировать в C, а затем вызовать функции C друг друга C. Почти у всего есть библиотека FFI для «легко» экспорта в C.
http://www.smlnj.org/doc/smlnj-c/index.html
Таким образом, внешнему миру ваша библиотека SML будет вести себя как библиотека C, за исключением случаев, когда они не были утечками и утечками памяти*
*Не гарантия
Проекты популяризируют языки. Сделайте основную работу для интересного и бесспорно «крутого» проекта, используя ML, и люди будут стекаться на язык. Например, посмотрите на Erlang с Ejabberd и Mochiweb-оба классных проектов, которые творили чудеса для одноразового языка в роли, такого как Erlang (который, кстати, мой язык выбора развития в последнее время). Я, например, хотел бы увидеть, как кто -то сделает что -то рад с ML, язык - это радость, с которой нужно думать.
Есть Несколько стандартных компиляторов ML. Анкет Wiki Mlton также содержит эталон.
Я использовал Moscow ML, который компилирует стандартный ML в Bytecode. Это не быстро, но это работает. Mlton часто называют лучшим стандартным компилятором ML в отношении эффективности.
Обратите внимание, что поли/мл версия 5 или более позднее поддерживает как традиционную модель «куча дампа», так и автономные исполняемые файлы в C-стиле. Документация на Веб -сайт Poly/ML распространяется по многим различным местам, некоторые из них с действительно старыми датами в названии - но система жива и ногами.
Генерация объектного кода объясняется прохождением в выпуск заметок Для выпуска версии 5.0 (в настоящее время мы в 5,5): см. PolyML.export
там.
Существует также некоторый интерфейс поли/мл C, который был отремонтирован в последнее время для некоторых проектов по графическим интерфейсу. Вы должны спросить в списке рассылки Polyml.