2010-05-22 22 views
38

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

Una idea que se me ocurre es examinar todos los algoritmos populares sobre clasificación, árboles, gráficos, etc. y aplicarlos 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).

+0

https://clojurecademy.com es muy agradable recursos –

Respuesta

17

Yo recomendaría hacer la Euler Proyecto ejercicios:

http://projecteuler.net/

Proyecto Euler es una serie de desafiando/ordenador problemas de programación matemática que requerirá algo más que conocimientos matemáticos para resolver . Aunque las matemáticas le ayudarán a llegar a los métodos elegantes eficiente, se requiere 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 Proyecto Euler, puede comparar las soluciones a otros idiomas (no funcional) de programación, sino también soluciones de Clojure está disponible: http://clojure-euler.wikispaces.com/, por lo que puede contrastar imperativo funcional vs/idiomática Clojure .

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

+3

El sitio http://clojure-euler.wikispaces.com/ ya no es disponible cuando el wiki ha expirado – o0rebelious0o

12

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

11

Recientemente comencé a aprender Clojure y encontré labrepl útil.

Te permite familiarizarte con lo básico y el REPL, contiene una serie de ejercicios y describe bastante cosas no obvias que son difíciles de encontrar en la documentación ya que aún no sabes lo que estás buscando para.

Recomendado.

Editar

También el Python Challenge, una serie de puzzles que pueden ser resueltos por 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. Vea forum for Python Challenge Hints cuando está atascado.)

El desafío de Python 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.

6

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 bucles. 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é.

8

Hay algunos Koanes funcionales para Clojure: https://github.com/functional-koans/clojure-koans

no han conseguido tiempo para probar estos, pero han oído buenas críticas.

+0

Este artículo describe cómo comenzar a utilizar los koans en tres idiomas, incluido clojure: http://sett.ociweb.com/sett/settJan2011.html#clojure-koans –

20

4clojure se lanzó 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, desde tutoriales de lenguaje como What is the second element of this list? hasta preguntas que hacen reflexionar, como Is it possible to arrange these N words so that each differs from the preceding one by at most one character, y se agregan más problemas todos los días.

7

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

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

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

2

http://exercism.io/ tiene varios ejercicios no tan triviales, le dan una prueba y una descripción, usted presenta una solución y refactoriza mirando el código de otras personas lo recomiendo, además de que es políglota puede hacer los ejercicios en cualquier lenguaje de programación que admitan.

Como han mencionado otros, Project 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 que Timoteo Baldridge ofrece varios tutoriales en vídeo en el que disecciona core.async, transductores, la programación lógica y un montón de otras cosas divertidas para jugar con en: https://tbaldridge.pivotshare.com/

0

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

Usted puede revisar sus habilidades no sólo con clojure, pero Haskell, Scala, Erlang y muchos más

Cuestiones relacionadas