2010-11-18 7 views
4

La nouvelle langue n'est intéressante que si je peux utiliser de nouvelles bibliothèques. Donc je veux savoir quelles nouvelles bibliothèques je peux utiliser dans .net avec F #. Si F # est compatible avec ML/OCaml, quelles bibliothèques Ocaml sont portées sur F # ou peuvent être portées. Je suis intéressant dans le traitement du signal/la reconnaissance vocale, la programmation logique/bibliothèques de résolution SLD dans .NET.nouveau jeu d'outils: modules F # originaux ou portés depuis OCaml

+0

"Appel à Jon Harrop ..." :) – Benjol

Répondre

11

Je ne pense pas qu'il y ait un grand nombre de bibliothèques ML/OCaml qui ont été portées sur F #. Le style de programmation F # est devenu très différent de ce que les gens utilisent dans ML/OCaml, donc une bibliothèque ML/OCaml se sentirait un peu étrangère aux programmeurs F #.

Cependant, certains projets compilent en F # et OCaml. F # compilateur lui-même utilisé pour être comme ça et je crois que Slayer de MSR est (ou était?) Un autre exemple. Cependant, pour les deux domaines que vous avez mentionnés, je ne connais aucune bibliothèque F #.

Si vous êtes intéressé par la compilation du code OCaml en F #, alors voici quelques choses qui peuvent vous aider:

  • La limitation de la langue plus importante lorsque le portage du code OCaml à F # est que F # ne prend pas en charge foncteurs.
  • Certaines bibliothèques OCaml standard sont mises en œuvre dans l'ensemble FSharp.PowerPack.Compatibility.dll (qui se trouve dans F# PowerPack)
+1

De nombreuses bibliothèques pour OCAML sont des wrappers pour les projets C; Je ne sais pas comment ce paradigme s'inscrit dans F # /. NET. Un aperçu? (Je voudrais également ajouter à votre propos sur le détournement F # d'OCAML, F # n'inclut pas les foncteurs ou les variantes polymorphes, qui sont utilisées assez souvent dans les projets OCAML). – nlucaroni

11

F # comprend certains ports de OCaml tels que les Set et Map collections. Autres béton structures de données peuvent être facilement portés, tels que les structures de données purement fonctionnelles de Chris Okasaki's excellent monograph. J'ai décrit un tas de tas basé sur son tas de gauche here dans OCaml et F #. J'ai publié un examen plus approfondi de plusieurs tas purement fonctionnels dans F # here. Cependant, F # ne semble pas capable d'exprimer des structures de données abstraites (par exemple, des listes caténables abstraites sur des files d'attente), car il lui manque le système de modules d'ordre supérieur qu'Okasaki utilise de façon si experte. J'ai également posté quelques autres traductions comme ceci Burrows-Wheeler transform dans OCaml et F #. OCaml a beaucoup de bibliothèques impressionnantes comme ocamlgraph mais elles sont souvent difficiles ou impossibles à traduire directement parce que F # manque de fonctionnalités de langage de base comme des modules de plus haut niveau, des variantes polymorphes, des macros et ainsi de suite.

Microsoft a été le premier utilisateur F # à adopter, bien sûr, son TrueSkill ranking system (utilisé dans Halo 3 et Bing AdCenter) et son logiciel de vérification de pilote tiers d'OCaml à F #.

Les outils de ligne de commande Coherent PDF pour manipuler des documents PDF sont l'une des rares bases de code à être compilées à la fois dans OCaml et F #.

Nous avons traduit notre moteur Smoke Vector Graphics et notre application (abandonnée) Presenta de OCaml à F # et il est maintenant vendu comme F# for Visualization. La traduction a été certainement facilitée par la similarité entre les langues, mais cela a pris des jours et il n'y a aucun moyen de se recouper.

La plus grande partie du code traduit d'OCaml en F # est commerciale car F # est principalement un langage commercial et, par conséquent, les utilisateurs commerciaux d'OCaml migrent vers F #. Le code source libre F # peut commencer à décoller après la publication récente de F # lui-même comme OSS, mais il est encore tôt. En ce qui concerne vos sujets spécifiques (par exemple, le traitement du signal), je ne suis pas sûr de savoir quoi recommander au-delà de la liaison à FFTW, que j'ai décrit dans Visual F# 2010 for Technical Computing.

1

J'ai trouvé une bibliothèque qui supporte le développement d'algorithmes évolutifs.

F # Intelligence artificielle Bibliothèque - Implémentation de différentiel Evolution: http://fsai.codeplex.com/documentation?version=11

sur les algorithmes évolutifs là: http://en.wikipedia.org/wiki/Evolutionary_algorithm

En outre il y a une brève discussion sur "nice to have" moteur DLV de résolution sur F # (et un lien vers prolog porté à C#) http://cs.hubfs.net/forums/thread/6676.aspx

C'est tout ...