functional-programming clojure

functional programming - Aprendizaje funcional/programación Clojure-ejercicios prácticos?



functional-programming (9)

Estoy aprendiendo programación funcional con Clojure. ¿Qué ejercicios prácticos puedes recomendar? Los repositorios en línea con soluciones serían perfectos.

Una idea en la que puedo pensar es pasar por todos los algoritmos populares sobre clasificación, árboles, gráficos, etc. e implementarlos en Clojure. Si bien podría funcionar, puede ser bastante empinado y es probable que lo haga de manera ineficiente (en comparación con alguien que sabe lo que está haciendo).


Como programador de LISP una vez, encontré Clojure Koans https://github.com/functional-koans/clojure-koans extremadamente eficiente y metódicamente sólido.

Utilice una disposición de tres ventanas (editor + evaluador + repl) para obtener comentarios instantáneos, referencias de documentación y experimentos sobre la marcha.

Los temas del "tutorial" están bien organizados y gradualmente introducen material más complejo. Sin duda, un buen punto de partida si tiene al menos alguna experiencia LISP.



Pruebe 99 problemas de Lisp . Las soluciones no están en Clojure, pero deberían ser fáciles de traducir.


Recientemente comencé a aprender Clojure y descubrí que labrepl útil.

Le permite familiarizarse con los conceptos básicos y el REPL, contiene una serie de ejercicios y describe un poco de cosas no obvias que son difíciles de encontrar en la documentación ya que todavía no sabe lo que está buscando.

Recomendado.

Editar

También el Python Challenge , una serie de acertijos que se pueden resolver con unas pocas líneas de programación; la solución a un rompecabezas te da la URL para visitar para el siguiente rompecabezas.

Aunque no específicamente Clojure, los acertijos son bastante entretenidos y una buena manera de mojarse los pies con cualquier lenguaje nuevo en mi humilde opinión. (Hay un par de acertijos que son específicos de Python, pero la mayoría no. Consulte el foro de Sugerencias del desafío de Python cuando esté atascado).

El Python Challenge difiere de las tareas de Euler en ser más práctico y menos orientado a las matemáticas; las tareas incluyen cosas como filtrar los bytes de una imagen y seguir hipervínculos programáticamente.


Recomendaría estudiar el código en clojure.contrib en github.

Como ejercicio para aprender FP, recomendaría simplemente escribir las aplicaciones en las que está trabajando actualmente en Clojure, pero trate de no utilizar ningún Refs o loops. Dedíquese a resolver sus problemas de manera funcional utilizando la recursión. Si crees que debes usar un Ref o un loop, asegúrate de explicar por qué.


Recomiendo encarecidamente Hackerrank, tiene un dominio de programación funcional: https://www.hackerrank.com/domains/fp/intro

Puede verificar sus habilidades no solo con clojure, sino también con haskell, scala, erlang y muchos más


Yo recomendaría hacer los ejercicios de Project Euler:

http://projecteuler.net/

El Proyecto Euler es una serie de desafiantes problemas de programación matemática / informática que requerirán más que solo conocimientos matemáticos para resolver. Aunque las matemáticas te ayudarán a llegar a métodos elegantes y eficientes, se requerirá el uso de una computadora y habilidades de programación para resolver la mayoría de los problemas.

Debido a que muchos programadores están resolviendo ejercicios de Project Euler, puede comparar las soluciones con otros lenguajes de programación (no funcionales), pero también están disponibles las soluciones de Clojure: http://clojure-euler.wikispaces.com/ , para que pueda contrastar el imperativo vs . Clojure funcional / idiomático.

Por supuesto, aprenderá más haciendo primero los ejercicios, sin consultar ninguna de las soluciones.


http://exercism.io/ tiene varios ejercicios no tan triviales, te dan una prueba y una descripción, envías una solución y refactorizas mirando el código de otras personas. Lo recomiendo mucho, además de que es políglota lo puedes hacer los ejercicios en cualquier lenguaje de programación que admitan.

Como otros mencionaron, el Proyecto Euler es un gran lugar para comenzar. Pero elija un buen libro que le enseñe los fundamentos y la justificación para la implementación de Clojure, la programación de Clojure por Stuart Halloway viene a la mente.

Una vez que haya terminado con eso, Timothy Baldridge ofrece varios videos tutoriales en los que analiza core.async, transductores, programación lógica y muchas otras cosas divertidas para jugar en: https://tbaldridge.pivotshare.com/


4clojure fue lanzado recientemente. Se necesita mucha inspiración de Functional Koans, y varios de los acertijos de 99 Lisp Problems; pero mejora en ambos proporcionando una experiencia de aprendizaje para la que solo necesita su navegador.

Los problemas varían en dificultad de los tutoriales de idiomas, como ¿Cuál es el segundo elemento de esta lista? a preguntas inspiradoras como ¿Es posible organizar estas N palabras para que cada una difiera de la anterior en un máximo de un carácter , y se agregan más problemas todos los días?