Je suis en train de développer un logiciel de simulation dans Clojure qui devra traiter de nombreuses données vectorielles (essentiellement issues de décalages dans des tableaux de flottants Java, d'une longueur typiquement comprise entre 10 et 10 000). Un grand nombre de ces vecteurs devra passer par diverses étapes de traitement - par ex. en normalisant les vecteurs, en concaténant ensemble deux flux de vecteurs, en calculant une moyenne mobile, etc.Unités de traitement vectoriel enfichables dans Clojure
Plutôt que de tout faire dans un style impératif, j'espérais créer une solution Clojure plus fonctionnelle qui ferait ce qui suit:
- permettent une fonction de vecteur pour être transformée en un module enfichable , par exemple, (def module-a (make-module une certaine fonction))
- permettent à ces modules d'être composés dans des pipelines, par ex. (def combine-module (combiner-en-série module-un module-b)) alimenterait la sortie du module-a dans l'entrée du module -b
- permettre fonctions auxiliaires pour accéder à l'état stocké dans un module donné , par exemple (moyennement mobile moyennement-mobile-module), qui devrait fonctionner même si un module à moyenne mobile est enfoncé profondément dans un pipeline combiné
- cacher tout code standard dans les coulisses, par ex. allouer des tableaux temporaires suffisamment grands pour le calcul vectoriel.
Cela vous semble-t-il logique?
Si oui, des conseils d'implémentation ou des bibliothèques qui pourraient vous aider?