новый набор инструментов: оригинальные модули F # или портированные из OCaml - PullRequest
4 голосов
/ 18 ноября 2010

Новый язык интересен, только если я могу использовать новые библиотеки. Поэтому я хочу знать, какие новые библиотеки я могу использовать в .net с F #. Если F # совместим с ML / OCaml, то какие библиотеки Ocaml перенесены в F # или могут быть перенесены. Я интересуюсь обработкой сигналов / распознаванием голоса, логическим программированием / библиотеками разрешения SLD в .NET.

Ответы [ 3 ]

12 голосов
/ 18 ноября 2010

Я не думаю, что существует большое количество библиотек ML / OCaml, которые были портированы на F #.Стиль программирования на F # сильно отличается от того, что люди используют в ML / OCaml, поэтому библиотека ML / OCaml будет немного чужды программистам на F #.

Однако есть несколько проектов, которые кросс-компилируются в F # и OCaml.Раньше сам F # компилятор был таким, и я считаю, что Slayer из MSR является (или был?) Еще одним примером.Однако для двух упомянутых вами доменов я не знаю ни одной библиотеки F # вокруг.

Если вы заинтересованы в компиляции кода OCaml в F #, вот несколько вещей, которые могут вам помочь:

  • Большее ограничение языка при переносе кода OCaml в F # заключается в том, чтоF # не поддерживает функторы.
  • Некоторые стандартные библиотеки OCaml реализованы в сборке FSharp.PowerPack.Compatibility.dll (которую можно найти в F # PowerPack )
11 голосов
/ 18 ноября 2010

F # включает в себя некоторые порты из OCaml, такие как коллекции Set и Map. Другие конкретные структуры данных могут быть легко перенесены, например, чисто функциональные структуры данных из превосходной монографии Криса Окасаки . Я описал сортировку кучи на основе его левой кучи здесь в OCaml и F #. Я опубликовал более подробный обзор нескольких чисто функциональных куч в F # здесь . Однако F #, по-видимому, не способен хорошо выражать абстрактные структуры данных (например, каталитические списки, абстрагированные по очередям), поскольку ему не хватает модульной системы высшего порядка, которую Окасаки использует так искусно. Я также опубликовал некоторые другие переводы, такие как преобразование Берроуза-Уилера в OCaml и F #. В OCaml есть много замечательных библиотек, таких как ocamlgraph , но их часто сложно или невозможно перевести напрямую, потому что в F # отсутствуют основные функции языка, такие как модули высшего порядка, полиморфные варианты, макросы и т.

Microsoft была первым последователем F #, конечно, переместив свою систему ранжирования TrueSkill (используется в Halo 3 и Bing AdCenter) и стороннее программное обеспечение для проверки драйверов с OCaml на F #.

Инструменты командной строки Coherent PDF для работы с документами PDF - одна из немногих баз кода, кросс-компилируемых как в OCaml, так и в F #.

Мы перевели наш Smoke Vector Graphics движок и наше (прекращенное) приложение Presenta с OCaml на F #, и теперь оно продается как F # для визуализации . Сходство между языками, безусловно, было облегчено благодаря переводу, но на это потребовались дни, и мы не сможем сделать кросс-компиляцию.

Большая часть кода, переводимого из OCaml в F #, является коммерческой, потому что F # - это прежде всего коммерческий язык, и, следовательно, коммерческие пользователи OCaml переходят на F #. Открытый исходный код F # может начать набирать обороты после недавнего выпуска самого F # как OSS, но это еще рано.

Что касается ваших конкретных тем (например, обработка сигналов), я не уверен, что рекомендовать помимо привязки к FFTW, который я описал в Visual F # 2010 для технических вычислений .

1 голос
/ 19 ноября 2010

Я нашел одну библиотеку, которая поддерживает разработку эволюционных алгоритмов.

F # Библиотека искусственного интеллекта - реализация дифференциальной эволюции: http://fsai.codeplex.com/documentation?version=11

про эволюционные алгоритмы там: http://en.wikipedia.org/wiki/Evolutionary_algorithm

Также есть небольшая дискуссия о «неплохо иметь» движок разрешения SLD на F # (и одна ссылка на пролог, портированный на C #) http://cs.hubfs.net/forums/thread/6676.aspx

Вот и все ...

...