6 ms·
I've been slowly learning Lisp to hack on Emacs, org-mode and org-babel. Main goal being to turn AWS JSON data into org-mode headings and org-babel data to do f
by bloopernova 7y ago
I've been slowly learning Lisp to hack on Emacs, org-mode and org-babel. Main goal being to turn AWS JSON data into org-mode headings and org-babel data to do further work on.
Very much a side project and I'm a bear of very little brain, so it's taking me a long long time.
Seeing Clojure and other Lisp stuff in the wild gives me hope that I can lean on enough people's documentation and source that I can eventually learn what I need.
I know some folks sneer a little at Lisp, but I really enjoy trying to learn it. I haven't felt as motivated to learn a coding language since about ten years ago when I used Perl to transfer/munge data from different LDAP systems into Zimbra.
So, thank you for sharing, this is fascinating stuff.
- defined 7y ago> I know some folks sneer a little at Lisp I wonder why. Some developers I know and hold in high regard have almost venerated Lisp, so I've always thought there must be something to it. I just thought it wasn't something you could actually use IRL, but I was wrong. I found this out when I was recently motivated to learn Clojure, and now I am starting to grok their admiration.
- blunte 7y agoIt will depend on whom you talk to - perhaps how old they are, and certainly where they come from (experience wise, education wise, etc.) The usual easy excuse is about parens, but that complaint has been put to rest so many times that it's not worth replying to anymore. (And people said the same thing about Python whitespace, but now Python is at or near the top of the pile.)
- gherkinnn 7y agoPython has too few parentheses, Clojure has to many. There’s just no winning. Ultimately, these complaints are superficial and serve only to justify one’s laziness.
- blunte 7y agoClojure has the same number of parens as Javascript, C/C++, Java, and similar languages have parens+squiggle-brackets. (print "foo") vs print("foo"). same same. There's so much more to it than this. I can say without reservation that people who do not take a couple/few weeks to learn a Lisp just do not know what they are missing, and their arguments against it are viewed as children who lack enough experience to know what they are rejecting.
- deleted 7y ago[deleted]
- wostusername 7y ago>(print "foo") vs print("foo"). same same. If you look at things other than function calls, it starts to look different: let x = 5, y = 10 foo(x,y) vs (let [x 5 y 10] (foo x y)) I actually like Lisps and think the S expression syntax is one of their best features, but I'm not going to pretend there are the same number of brackets in Lisps as there are in C family languages.
- kgwxd 7y agoThe first example is missing the scope brackets likely enclosing the expressions, and there should probably be a few semi-colons.
- wostusername 7y ago>The first example is missing the scope brackets likely enclosing the expressions Sure, but so is the Clojure one. So I guess it's more like: fun bar () { let x = 5, y = 10 foo(x,y) } vs (defn bar [] (let [x 5 y 10] (foo x y)))
- blunte 7y ago1st example: 10 symbols: (){=,=(,)} 2nd example: 10 symbols: ([]([]()))
- kgwxd 7y agoI think the ideas spelled out in rationale are really what sets Clojure apart from all the other lisps. For decades, I got excited every time a new idea around lisp or functional programming and I'd play with them for weeks. Eventually, I'd get to the big question, how do I bring this idea into development environment that solves the hundreds of other ugly real-world problems I have to deal with to make a usable application? Clojure solves that by being hosted. Immutable data structures are great, but when it's the default, it's a huge win in cognitive-overhead. Maybe that feature isn't unique to Clojure but it's certainly not a prerequisite to being called a lips or a functional language. Singly-linked lists are cool, but almost every other type of list is cooler, being able to read, eval and print those as well is really cool.
- defined 7y ago> Immutable data structures are great, but when it's the default, it's a huge win in cognitive-overhead. Maybe that feature isn't unique to Clojure but it's certainly not a prerequisite to being called a lips or a functional language. Yes, indeed. TBH, I developed in Erlang for 10 years and, as a result, developed a strong preference for "immutable data structures everywhere". Unlike LISPs that I've seen (admittedly not that many), with Erlang there simply is no global data so no vars to change - it's all done via function parameters and tail recursion (Erlang has TCO baked in, btw).