Hoppas FP-träffen var tillfyllest! Hade gärna varit med, men hade förhinder.
Jag har kollat på Clojurescript up and running (Sierra, Vanderhart), för Clojurescript och det är en bra intro till det och grundläggande "vanlig clojure" också.
Det som tog orimligt lång tid för mig att förstå är hur Clojure egentligen är uppbyggt (och det är inte särskilt komplicerat, men väldigt snyggt). En bra övning är att sätta sig med javakoden och försöka införa någon relativt godtycklig förändring. Många aha-upplevelser för mig för hur Clojure instansierar sig och alla grundläggande konstruktioner, typ def, if och let. Mycket man skriver i replen är ju mycket närmare javaobjekt än man först tror.
Ett par bra blogginlägg om de mest centrala datastrukturerna rekommenderas också varmt:
Zippers är typ rätt knöliga att begripa (tyckte jag) men väldigt praktiska. Att brottas lite med Enlive är en rätt bra introduktion till dem. Det är ju egentligen bara att definiera fyra (väl?) operationer och hitta på en datastruktur man vill att de ska verka på.
Det går inte att bortse från att det är rätt viktigt att ha några böcker java under bältet för att inte vara utelämnad till vänliga människor som skriver wrappers till java-libbar. Med Clojure blir plötsligt alla knasiga TheDataStructureFilterImpl rätt ointressanta eftersom språket på ett snyggt sätt redan hanterar dem, men man måste förstå hur man kommer åt de delar av biblioteken som faktiskt gör något.
Det är väldigt väldigt bra att koll på java, utan och innan. Hur fungerar locks/synchronized? Exceptions? Vad karaktäriserar en thread? Det är inte alltid man kommer ifrån att grotta med javas klasshierarki-grejer. Classloaders kan ställa till det på subtila sätt, särskilt när andra bibliotek också har sina egna (jboss, tomcat, ...).
Michael Fogus har väldigt många intressanta git-repon i alla möjliga språk som man också kan kolla in.
https://github.com/fogus
/Linus