Skip to content
0:00 / 0:00

#clojure#repl#repl-drivendevelopment

REPL Driven Development, Clojure's Superpower - Sean Corfield

London Clojurians

3.9K subscribers • 52 videos on Hallway

YouTube
  • Recommended by 1 person: 1 in engineering communities.
  • Presented by Sean Corfield

Intermediate. Assumes working knowledge.

24K views5 years ago1 recommendation

Programming languagesTools and practiceLisp and ClojureVim, Emacs and editorsTesting

Sean Corfield demonstrates how to build a web application live from your editor using Clojure's REPL-driven development workflow.

Everyone talks about REPL driven development (RDD) but what it is really? Why is the Clojure REPL not like other languages’ REPLs? Can you really develop an application “live”? What about restarts, refreshes? Don’t I need special, magical tooling for this? This talk will show you how fundamental Clojure’s REPL is to development, and how to build a web application, live, from your editor, with no restarts, no refreshes, just simple, basic tooling. Clojure’s REPL is truly its superpower:it lets you hold your application in your hand, query it, modify it, evolve it, with just a basic set of tools and an understanding of what “REPL-friendly development” means. Sean Corfield used to build compilers, virtual machines, databases and telecom systems but eventually got a real job building web applications. After eight years of ANSI C++ Standardization and a decade of web development with JVM-based languages, he finally found his first love again - functional programming - and for the last decade he has written Clojure almost every day. github.com/seancorfield

Why it's here

1 person recommends this

What people say. Recommended as an excellent demonstration of Clojure's REPL-driven development workflow and its benefits.

u/BrunoBonacciin r/Clojure • Recommends

REPL-Driven Development - Clojure's Superpower by Sean Corfield - @ LndClj

u/StoriesEnthusiastin r/Clojure • Mentions

On “[deleted by user]”

Did anyone a similar start?: Yes, me. A few years ago I was in your exact same situation. I don't practice much in Clojure (but it is about to change in the next few weeks) and the code you posted still takes me about half a minute to _organize in parts_ in my head, then usually a limited amount of time to understand each part and finally an undefined amout of time to understand how the parts interact. Did it change?: Yes, it changed. _Everything contributed_, bit by bit, to change it: - The frustation of mutable-by-default situation in other languages kept me fighting to understand this not mutable-by-default and these persistent data-structures thing. More like trying to overcome my perf…

u/robertstuttafordin r/Clojure • Mentions

On “Love Clojure, challenged by discoverability”

…s information from your program while it is running? For me, the REPL is the key. Being able to put absolutely anything into a var that I can cider-inspect / pretty-print to a log or a <pre> tag / stick into something like https://github.com/djblue/portal makes this problem instantly go away, and I get a whole bunch extra stuff at the same time: link to this video If you MUST have it codified somewhere, probably the next highest leverage point is to use specs. Typically we do this when you've a single set of data structures that are widely reused (as opposed to, say, a map that's only used between a single SPA component and an API call). I've tried both clojure.spec and Malli. Clojure's spec is sat…

u/fredoverflowin r/Clojure • Mentions

On “Sublime ❤︎ Clojure”

> how many really here think the clojure repl is a superpower REPL Driven Development, Clojure's Superpower

u/slifinin r/Clojure • Mentions

On “Recommended starting point for someone with programming experience but not Lisp or functional programming experience?”

Maybe attempt something like this: http://clojure-doc.org/articles/tutorials/basic_web_development.html Then watch this talk on REPL driven dev: link to this video

u/kemcleanin r/Clojure • Mentions

On “Revamp/refresh old Clojure knowledge focusing on a job interview”

…At my work we use integrant for configuration management, ring/jetty for a web server, reitit for routing, hiccup templates, and a bunch of java libraries and some internal libraries to connect to a SPARQL db. I assume that's not normal, but it works for us. There was a meetup presentation a short while ago about building a web app from the REPL: link to this video He uses different tools and libraries than I just mentioned, but I think it's still a good example of a good Clojure workflow and you'll end up with a basic web app in the end if you follow along.…

u/jherrlinin r/functionalprogramming • Mentions

On “Which language to choose ?”

Clojure is not a typed language and it goes against your "Write->Compile->Debug". But if interactive development is new to you I really encourage you to look into that. I tend to think about the interactivity as a bash shell but for a programming language. Sean Corfield has a really good talk where he presents it. [video Interactive development is also called REPL driven development, but I often find the naming ambiguous as many programming languages have REPLs but they dont support REPL driven development.

u/PolicySmall2250in r/Clojure • Mentions

On “REPL tips??”

…gment the ootb REPL (middleware, visual tools etc.) - the various clever / creative / micro-tweaked workflows one can make to suit one's own style/brain/usage needs (both with just the ootb REPL (which I do mostly), as well as with augments) **For surveyin' and deep divin'...** - REPL Driven Development, Clojure's Superpower (by u/seancorfield ) [video - REPL-driven development (RDD) with Clojure (by Andrey Fadeev --- recommend you follow his channel) [video - Clojure Basics (by m'gentlenerd friends at nilenso) [video **For contrast --- Agentic Masterclass set beside Old-Skool Grug Brain** - m'colleague Kapil Reddy and I at a recent SciCloj demo/study session: https://www.evalapply.…

u/jghobbiesin r/Clojure • Mentions

On “New Clojurians: Ask Anything - November 28, 2022”

…s and I don't know how fireplace works, but honestly VSCode has a pretty decent Getting Started you could run through in 30 minutes that demonstrates the flow (https://calva.io/getting-started/) if you run through that then figure out how to do the same things in fireplace you'll be off to a great start. This video gives you a good idea as well: link to this video **Struggling with the Syntax, particularly parens** Structural editing solves this. Paredit, smartparens, and strict mode will likely feel uncomfortable at first but they'll eventually fit like a glove. Whenever I have a newbie complain to me about the parentheses it's a sure sign they haven't embraced structural editing. Correctly inde…

u/jherrlinin r/Clojure • Mentions

On “New to clojure, where to start?”

After you have some understanding of the syntax I encourage you to take a look at the concept of interactive development, if you are new to that. Sean Corfield has a very good presentation about it. How you can “live inside the app” while you are building it. It’s also called REPL driven development but I think that term is a bit ambiguous as many languages have REPL. link to this video Happy Clojure hacking!

u/chinpokomonin r/Clojure • Mentions

On “Calva with Reveal REPL”

I just caught the talk you gave. I haven't finished it yet, but everything I've seen so far is exactly what I was hoping to accomplish. I will be taking my time to go through everything, but kudos!

u/d-nandoin r/Clojure • Mentions

On “Clojure Community State”

I've found that Clojure is particularly hard to learn passively, simply because of the nature of the library language ecosystem. There seem to be hundreds of choices - which ones should I focus on? It's easy to get lost, and then hung up, on that question. While the suggestions as to which libraries are current and most used here are very helpful, I've come to think that learning the foundation of REPL driven development is perhaps the most important. So I'd suggest mastering that first, and along the way the rest will fall into place. Here's one resource to start with, perhaps an advanced one, there are many others now that would be helpful: link to this video

u/vivshawin r/ProgrammingLanguages • Mentions

On “Is there such thing as a “run-on-write” language? See description for an eg”

I'm not sure if I'd say the language is "built around it", but I think you'll find the best expression of it in LISPs^(\*). You may hear this idea referred to as REPL-driven development\- but don't get it confused with "the language just has a REPL executable"! We're talking about a scenario where you can write source in an editor as you usually would, but execute that source on the fly, interactively, as you write it. I find the developer experience is extremely interesting- I can simultaneously be writing an application, and running it, and messing around in the guts of the running system, totally seamlessly. Or by analogy to a more ordinary interpreted lang, like Ruby: it's as though my R…

u/BrunoBonacciin r/Clojure • Mentions

On “London Clojurians Talk: REPL-Driven Development - Clojure's Superpower (by Sean Corfield)”

Hi all, please the recording of this event is available on our YouTube channel: link to this video

u/shivekkhuranain r/Clojure • Mentions

On “Diving into clojure”

…dying that. Watch youtube videos\1\\2\\3\, setup your editor and get familiar with it. The REPL will make Clojure \*click\*. About the \*barebones rest api server\*, I wrote a 3 part series on "How to build a Drug Dealer API" with Clojure and Pedestal. You might like it ! \1\ REPL Driven Development, Clojure's Superpower - Sean Corfield [video \2\ "Running With Scissors: Live Coding With Data" by Stuart Halloway [video \3\ Why you should use ClojureScript by Shivek Khurana (me!) [video…

u/Psetmajin r/Clojure • Mentions

On “VS Code with Calva - "You don't have an extension for debugging Clojure."”

I don't tend to use Calva much (and don't end up using a debugger in general for Clojure), because of REPL Driven Development (here's the most promising recent talk I could find for explaining it). As /u/LesZedCB mentioned, the debugger should activate when you run an expression. So, instead of hitting F5, you're expected to use one of various hotkeys to send some example code to the REPL.