Voici un problème avec lequel j'ai vraiment eu des problèmes. J'ai besoin de fusionner deux séquences triées en une seule séquence triée. Idéalement, l'algorithme devrait être paresseux et ne nécessiterait pas la mise en cache de plus d'un élément de chaque séquence. Ce n'est pas un problème terriblement difficile à résoudre, et j'ai pu concevoir un certain nombre de solutions en F #. Malheureusement, toutes les solutions que j'ai trouvées posent un problème parmi d'autres.Comment fusionner des séquences triées?
Appels récursifs aux générateurs de sous-séquences en utilisant le rendement !. Cela produit des solutions élégantes, mais la création d'une sous-séquence pour chaque article est un tueur de performance.
vraiment le code Arcane et ingérable avec des commutateurs match profondément empilés, plusieurs blocs presque identiques de code, etc.
Code qui force F # dans un mode purement procédural (beaucoup de valeurs mutables, etc.).
Et tous les exemples en ligne que j'ai pu trouver sur les mêmes bas-fonds. Suis-je en train de manquer quelque chose d'évident: comme si c'était vraiment simple ou bien évidemment impossible? Est-ce que quelqu'un connaît une solution vraiment élégante, efficace et surtout fonctionnelle? (Il ne doit pas être purement fonctionnel.) Sinon, je pourrais finir par mettre en cache des sous-séquences et utiliser des listes ou des tableaux.
Vous voudrez peut-être regarder cela pour un exemple sur l'algorithme et le convertir en F #. http://code.activestate.com/recipes/141934-merging-sorted-sequences/ –
@James: l'algorithme n'est pas le problème, c'est maintenir la paresse et l'ordre-complexité et l'élégance à la fois c'est le problème. La réponse est 'LazyList'. – Brian
@James: Ce site de recette ActiveState a des choses intéressantes. – TechNeilogy