2010-11-18 3 views
4

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

+0

«Вызов Jon Harrop ...» :) – Benjol

ответ

11

Я не думаю, что существует большое количество библиотек 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)
+1

Многие библиотеки для OCAML являются обертками для проектов C; Я не уверен, как эта парадигма вписывается в F # /. NET. Любое понимание? (Я также хотел бы добавить к вашему вопросу о переходе F # из OCAML, F # не включает в себя функторы или полиморфные варианты, которые часто используются в проектах OCAML). – nlucaroni

11

F # включает в себя некоторые из портов OCaml, такие как Set и Map коллекций. Другие бетон структуры данных могут быть легко перенесены, такие как чисто функциональные структуры данных от Chris Okasaki's excellent monograph. Я описал тип кучи, основанный на его левой куче here в OCaml и F #. Я опубликовал более тщательный обзор нескольких чисто функциональных кучек в F # here. Тем не менее, F #, похоже, не в состоянии выразить абстрактные структуры данных (например, catenable lists abstracted over queues) очень хорошо, потому что ему не хватает системы модулей более высокого порядка, которую Окасаки использует так умело. Я также опубликовал некоторые другие переводы, подобные этому Burrows-Wheeler transform в OCaml и F #. В OCaml есть много удивительных библиотек, таких как ocamlgraph, но их часто трудно или невозможно переводить напрямую, потому что F # не хватает функций основного языка, таких как модули более высокого порядка, полиморфные варианты, макросы и т. Д.

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

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

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

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

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

1

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

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

Это все ...

Смежные вопросы