Je développe un projet en .NET, dans le cadre duquel je vais manipuler des séries temporelles.
Étant donné que la partie principale du projet a été implémentée en C#, j'ai esquissé une conception orientée objet héritant de SortedDictionary
.
Cependant, je suis amoureux de la programmation fonctionnelle depuis quelques années, et j'ai pensé que puisque ce composant sera soumis à des algorithmes assez sauvages et intenses, je serais prêt à le traiter en parallèle et j'apprécierais d'avoir une structure immuable.
J'ai envisagé de le concevoir en F# en définissant un type comme suit :
type TimeSeries<'t> = (DateTime * 't) seq
et continuer ainsi.
Cela aurait l'avantage d'être immuable, et l'exécution en parallèle serait assez simple en utilisant le module Async
de F#. Je pourrais également utiliser la fonctionnalité d'unité de mesure de F#.
Je suis juste un peu inquiet de devoir utiliser les résultats des calculs en C#, et je me demandais si quelqu'un qui l'a déjà essayé pourrait me donner un retour d'expérience concernant le résultat en pratique.
Était-ce facile à utiliser au final ou était-ce trop compliqué de passer de C# à F# ?
Le fait que la collection soit immuable ne pose-t-il pas un problème d'efficacité lorsque les séries temporelles deviennent plus importantes?
Serai-je en mesure de garder le type générique lorsque je vais essayer de diviser les éléments, ou devrai-je rapidement passer à TimeSeries
avec mes fonctions?
Si je veux utiliser des algorithmes basés sur C# sur les séries temporelles pour certaines fonctionnalités, est-ce que cela rendrait toute cette idée inutile?
Avez-vous des références de recherches sur l'efficacité de l'implémentation fonctionnelle des séries temporelles?