Skip to content
0:00 / 0:00

#clojure#lisp#richhickey

Clojure for Java Programmers Part 1 - Rich Hickey

ClojureTV

111K subscribers • 135 videos on Hallway

YouTube
  • Recommended by 2 people: 2 on Hacker News.
  • A classic. People kept recommending it from 2013 to 2022.
  • Presented by Rich Hickey, creator of Clojure

Intermediate. Assumes working knowledge.

130K views13 years ago2 recommendations

Programming languagesSoftware designLisp and ClojureFunctional programmingJava and the JVM

Rich Hickey introduces Clojure's syntax, core data structures, and evaluation model to Java developers.

Part 1 of a presentation by Rich Hickey to the NYC Java Study Group. A gentle introduction to Clojure, part 1 focuses on reader syntax, core data structures, code-as-data, evaluation, special operators, functions, macros and sequences. No prior exposure to Lisp is presumed.

Why it's here

2 people recommend this

What people say. Recommended as an excellent introduction to Clojure and Lisp concepts for developers coming from object-oriented backgrounds.

Jachon Hacker News • Recommends

On “How do I “think in AngularJS” if I have a jQuery background?”

Indeed. Rich Hickey's 2-part presentation on "Clojure for Java Programmers" was a really slick presentation of a Lisp. (Focusing on the 'code is data' aspect from the beginning (at least once he starts talking about the language specifics themselves, he does spend a while motivating dynamic languages) rather than talking a lot about just higher order functions and macros and so on. He goes over the evaluation model and its difference from a Java/C++ model, he shows how to interop with Java... It's just a great talk.) Part 1: link to this video Part 2: link Slides: link

greggybon Hacker News • Recommends

On “Understanding the Power of Lisp (2020)”

…ion time in a Lisp is not necessarily similar to compilation in other languages. Working at a REPL does not imply that interpretation is happening. Clojure is an example of a Lisp that is exclusively compiled. Even when sending individual expressions to the REPL, they are compiled before being evaluated. 1: From a reply elsewhere in this thread: link to this video See this video for an overview of the core of Clojure. The link starts with an overview of Clojure's data types and data structures (skipping the intro for the reasons behind Clojure). This leads directly into the evaluation model, which is based on the data structures of Clojure. Watch through ~1h:30m to get a feel for what macros are used…

u/LeSUTHUin r/Clojure • Mentions

…the same language, and manipulates the data structures of the same language. Hope I was clear. Feel free to ask for any clarification, or any other questions you have. Have a nice day! PS: Phew, that took a while. The quote is one character, but there's so much backstory to this. Also check out Rich Hickey's \conversation with Brian Beckman\([video and his Clojure for Java Programmers (\Part1\([video \Part2\([video This explanation combined with those talks should probably put all the pieces together.…

istvan__on Hacker News • Mentions

On “John Carmack working on Scheme as a VR scripting language”

Same here, I never understood Java interfaces, abstract classes, and a ton of other "features" but picking up Clojure was a breeze. I don't understand why complicating thing that supposed to be simple helps you by any mean. On the top of that, I have seen several cases when Java programmers tipped over in their own code because of the complexity that they thought they understand, except there was a particular case when it was doing something else then expected. Reasoning about Clojure (LISP) code is always easy because if you follow best practices you have small functions with very little context to understand. On the top of these, I see the ratio of LOC 50:1 (worst case even higher) for Jav…

pgton Hacker News • Mentions

On “An Intuition for Lisp Syntax”

Lisp has only one rule called the Operational Form: (operator arg1 arg2 arg3 ...) The Operational Form is just a list denoted by parentheses. The operation or 'function' comes first, followed by its arguments or operands, e.g. (+ 1 2 3) => 6 The + symbol resolves to the plus function and is passed in the arguments 1, 2 and 3. Nested forms are evaluated inside-out: (+ 5 (- 10 6)) => 9 Traditionally, Lisp only has one data literal: `(linked lists)`, but Clojure adds `square brackets for vectors` and `{:curly brackets}` for hash maps. The colon denotes a keyword, which is a symbol which only ever resolves to itself and is commonly used for labeling things, e.g. keys in a map. Notice how the o…

Jachon Hacker News • Mentions

On “State of Common Lisp Survey 2020”

> I'm explaining why Lisp is hard to learn. It is not hard to learn in general, there are too many counterexamples of people of all sorts and skills learning it without these issues you are having, learning it as their first, learning it later in their careers... (CL is big , I'll give you that, but each piece can be chewed one at a time and does not seem to be individually that difficult.) So I can hypothesize why it's hard to learn for you . My first guess is still that you aren't meeting Lisp in its own terms and are trying to make Lisp fit your mental model of some other language and its ecosystem. This isn't going to work, and the failure mode (if I'm right) has nothing to do with Lisp…

greggybon Hacker News • Mentions

On “Understanding the Power of Lisp (2020)”

From a Clojure perspective, here are a few things to think about and explore to help understand where the power and value of macros lie. 1. Clojure does not have all of its various conditionals as language built-ins. There is a single conditional construct built in to the language, if. The rest are all defined in terms of if. Function arguments are eagerly evaluated in Clojure. How do you write a short-circuiting function in Clojure? (when predicate consequent) as a function must evaluate both the predicate and the consequent. If consequent is slow to calculate then your whole when expression is as slow as consequent, even if predicate is false and we do not need consequent. when is a Clojur…