Como novato en lenguajes funcionales (comencé a tocar Erlang hace un par de semanas, el primer lenguaje funcional que pude tener).Consejos sobre el aprendizaje "Cómo pensar funcional"?
Empecé a escribir algunos algoritmos pequeños (como left_rotate_list
, bubble_sort,
merge_sort
etc.). Con frecuencia me perdía en decisiones como "¿Debería usar una lista de ayuda para el almacenamiento de resultados intermedios?" y "¿debería crear una función auxiliar para hacer esto?"
Después de un tiempo, encontré que la programación funcional (paciencia conmigo si lo que estoy hablando no tiene ningún sentido) alienta un diseño de "arriba hacia abajo", es decir, cuando hago merge_sort, primero escribe todo el fusionar los pasos de clasificación y denominarlos como funciones auxiliares individuales; y luego implementa esas funciones auxiliares una por una (y si necesita dividir aún más esas funciones auxiliares, hágalo en el mismo enfoque).
Esto parece contradecir un poco el diseño de OO, en el que puede comenzar desde abajo para construir la estructura de datos básica, y luego ensamblar la estructura de datos y los algoritmos en lo que desea.
Gracias por los comentarios. Sí, quiero obtener consejos sobre cómo "pensar en lenguaje funcional" (como "pensar en Java", "pensar en C++").
¿Cuál es la pregunta? :-) – csl
¿Desea sugerencias para "una guía de programación funcional para programadores OOP"? – Mahin
Mahin, actualice la pregunta. Gracias por responder – chen