2010-05-22 16 views
38

Sto imparando la programmazione funzionale con Clojure. Quali esercizi pratici puoi raccomandare? I repository online con soluzioni sarebbero perfetti.Programmazione funzionale/Clojure di apprendimento - esercizi pratici?

Un'idea a cui riesco a pensare sta analizzando tutti gli algoritmi più diffusi su ordinamento, alberi, grafici, ecc. E implementandoli personalmente in Clojure. Mentre potrebbe funzionare, potrebbe essere piuttosto ripida e probabilmente lo farò in modo inefficiente (rispetto a qualcuno che sa cosa sta facendo).

+0

https://clojurecademy.com è molto bello risorsa –

risposta

17

io consiglierei facendo l'Eulero Progetto esercizi:

http://projecteuler.net/

Project Euler è una serie di sfidando problemi di programmazione matematica/informatica che richiederà più di semplici intuizioni matematiche da risolvere . Sebbene la matematica sia la che ti aiuta ad arrivare a metodi efficienti e con metodi efficaci , l'uso di un computer e le abilità di programmazione saranno necessarie per risolvere la maggior parte dei problemi.

Poiché molti programmatori stanno risolvendo gli esercizi Project Euler, è possibile confrontare le soluzioni di altri (non funzionante) linguaggi di programmazione, ma anche soluzioni Clojure sono disponibili: http://clojure-euler.wikispaces.com/, in modo da poter contrastare imperativo vs funzionale/idiomatica Clojure .

Naturalmente imparerai di più eseguendo prima tu stesso gli esercizi, senza consultare nessuna delle soluzioni.

+3

Il sito http://clojure-euler.wikispaces.com/ non è più disponibile come wiki è scaduto – o0rebelious0o

12

Prova 99 Lisp Problems. Le soluzioni non sono in clojure, ma dovrebbero essere facili da tradurre.

11

Recentemente ho iniziato a studiare Clojure personalmente e ho trovato utile labrepl.

Ti permette di familiarizzare con le basi e il REPL, contiene una serie di esercizi e descrive un po 'di cose non ovvi che è difficile trovare nella documentazione poiché non sai ancora cosa stai cercando per.

Consigliato.

Modifica

Anche il Python Challenge, una serie di puzzle che possono essere risolti con poche righe di programmazione; la soluzione a un puzzle ti dà l'URL da visitare per il prossimo puzzle.

Anche se non specificamente Clojure, gli enigmi sono piuttosto divertenti e un buon modo per bagnare i piedi con qualsiasi nuovo linguaggio IMHO. (Ci sono un paio di enigmi specifici per Python, ma la maggioranza no. Vedi forum for Python Challenge Hints se bloccato.)

La sfida di Python differisce dai compiti di Eulero per essere più pratica e meno orientata alla matematica; le attività includono cose come filtrare i byte di un'immagine e seguire i collegamenti ipertestuali a livello di programmazione.

6

Si consiglia di studiare il codice in clojure.contrib su github.

Come esercizio per l'apprendimento di FP, consiglierei di scrivere solo le app a cui stai attualmente lavorando in Clojure, ma cerca di non utilizzare nessun riferimento o loop. Sii dedicato a risolvere i tuoi problemi funzionalmente usando la ricorsione. Se pensi di dover usare un Ref o un loop assicurati di poter spiegare il perché.

8

ci sono alcuni Koan funzionali per Clojure: https://github.com/functional-koans/clojure-koans

non ho ottenuto intorno a provare questi, ma hanno sentito buone recensioni.

+0

Questo articolo descrive come iniziare con i koan per tre lingue incluso clojure: http://sett.ociweb.com/sett/settJan2011.html#clojure-koans –

20

4clojure è stato lanciato di recente. Ci vuole molta ispirazione da Functional Koans e molti dei puzzle di 99 Lisp Problems; ma migliora entrambi fornendo un'esperienza di apprendimento per la quale è necessario solo il browser.

I problemi variano in difficoltà da esercitazioni linguistiche come What is the second element of this list? a domande stimolanti come Is it possible to arrange these N words so that each differs from the preceding one by at most one character e ulteriori problemi vengono aggiunti ogni giorno.

7

In qualità di programmatore LISP una volta per volta, ho trovato Clojure Koans https://github.com/functional-koans/clojure-koans estremamente efficiente e metodicamente valido.

Utilizzare una disposizione a tre finestre (editor + valutatore + repl) per feedback immediato, documentazione di riferimento e sperimentazione al volo.

Gli argomenti del "tutorial" sono ben organizzati e introducono gradualmente materiale più complesso. Sicuramente un buon punto di partenza se hai almeno qualche esperienza LISP.

2

http://exercism.io/ ha diversi esercizi non banali, ti danno un test e una descrizione, tu mandi una soluzione e tu ti rifatti guardando il codice di altre persone lo consiglio vivamente, più è poliglotta puoi fare gli esercizi in qualsiasi linguaggio di programmazione supportano.

Come altri hanno menzionato Project Euler è un ottimo punto di partenza. Ma scegli un buon libro che ti insegnerà i fondamenti e la logica per l'implementazione del clojure, Mi viene in mente Programming Clojure di Stuart Halloway.

volta che hai finito con quel Timothy Baldridge offre diversi video tutorial dove seziona core.async, trasduttori, programmazione logica e un sacco di altre cose divertenti da giocare con a: https://tbaldridge.pivotshare.com/

0

Consiglio vivamente Hackerrank, ha dominio programmazione funzionale: https://www.hackerrank.com/domains/fp/intro

si può verificare le vostre abilità non solo con clojure, ma Haskell, Scala, Erlang e molti altri

Problemi correlati