Yeah, not having state variables was very difficult for me. I was using to being able to change things in place, so it took me a while to figure out how to handle state.
I know what you mean about having to stick with it for a while until things made sense!
Yeah, i left Clojure, but i could not get it out of my mind. It was still tickling me, so i returned for more attempts.
@spfeiffer what was it that made Clojure stick in your mind? some promise of a better experience? curiosity about lisp?
I guess the mismatch between my ability to make sense of the concepts on the one hand and the fact that others solved business problems with it elegantly. That told me there must be more behind it than i understood so far.
That was before Java 8, so these functional concepts were even more alien back then. I saw Clojure code in a joint public research project where participants from a german university donated a component that took a formal description of legal agreements between participants of a data distribution platform for sensitive engineering data, and generated a RabbitMQ routing configuration file from it. Like: I am A, and B may see this part of my data, C may see this other part, and i have no relationship with D. This configuration was mathematically proven to be correct.
By formal model verification
oh wow
The clojure code was very concise and seemed to be elegant. I as a Java cargo culter was asking myself: „This is all? Where are all the other lines of code?“ I did not understand the code at all, but i was fascinated, especially as the project collaborators from that university praised Clojure so much 😉
You know, Clojure code is just data, right? That makes reasoning about the code rather simple and approachable for mathematical analysis.
One of the names of these Clojure people i saw in the contributors list for Clojure 1.10 (clojure.core).
That must have been around 2013ish when i got to know Clojure through this encounter
That sounds like a fascinating project! Yes, it's amazing how being data-oriented makes things simpler. Data goes into a function and data comes back out. No magical side-effects you have to know about.
Well, i was project staff of an industry partner on this data platform, so i was tasked with integrating our product with said platform (using Java), but this generating of RabbitMQ routing configuration from formal contract definitions was surely one of the technical highlights. The university was into formal software verification methods, so they needed something „academia-style“.
Anyway, in the end this project contribution of other people made me a Clojurian. Funny coincidences.
and have you been able to program in Clojure since then?
Only in private. And i sneaked in a small config validation tool written in Clojure at a former employer. It's just a JAR, right? 😉 But that was undercover and not approved by management. Don't know they ever found out.
Heh, covert Clojure. One nice benefit of being a hosted language