Aquí hay un problema con el que realmente he estado luchando. Necesito unir dos secuencias ordenadas en una sola secuencia ordenada. Idealmente, el algoritmo debería ser evaluado de forma diferida, y no requerir el almacenamiento en caché de más de un elemento de cada secuencia. Este no es un problema terriblemente difícil de resolver, y he podido diseñar una serie de soluciones en F #. Desafortunadamente, cada solución que he encontrado tiene uno de varios problemas.¿Cómo combinar secuencias ordenadas?
Llamadas recursivas a las subsecuencias de los generadores con rendimiento !. Esto produce soluciones de aspecto elegante, pero la creación de una subsecuencia para cada elemento es un asesino de rendimiento.
código Realmente arcano y inmantenible con interruptores de los partidos apilados profundamente, múltiples bloques casi idénticas de código, etc.
Códigoque fuerza F # en un modo puramente de procedimiento (un montón de valores mutables, etc.).
Y todos los ejemplos en línea que he podido encontrar se fundan en los mismos cardúmenes.
Me falta algo obvio: como si fuera realmente simple o obviamente imposible? ¿Alguien sabe de una solución realmente elegante que también es eficiente y funcional en su mayoría? (No tiene que ser puramente funcional). De lo contrario, podría terminar en caché de subsecuencias y usar listas o matrices.
Es posible que desee ver en esto para un ejemplo de algoritmo y convertirlo en F #. http://code.activestate.com/recipes/141934-merging-sorted-sequences/ –
@James: el algoritmo no es el problema, es mantener la holgazanería y la complejidad y elegancia de orden a la vez. La respuesta es 'LazyList'. – Brian
@James: Ese sitio de recetas ActiveState tiene algunas cosas interesantes. – TechNeilogy