Files
hpr-knowledge-base/hpr_transcripts/hpr2942.txt
Lee Hanken 7c8efd2228 Initial commit: HPR Knowledge Base MCP Server
- MCP server with stdio transport for local use
- Search episodes, transcripts, hosts, and series
- 4,511 episodes with metadata and transcripts
- Data loader with in-memory JSON storage

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-26 10:54:13 +00:00

138 lines
8.5 KiB
Plaintext

Episode: 2942
Title: HPR2942: Why I love lisps
Source: https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr2942/hpr2942.mp3
Transcribed: 2025-10-24 13:38:25
---
This is HPR Episode 2942 for Tuesday the 12th of November 2019.
Today's show is entitled Why I Love Lips.
This is the first show of our new host, Nielazo,
and it's about 8 minutes long and carries a clean flag.
The summary is, a very wooden scripted episode about why I love the Lisp programming language family.
This episode of HPR is brought to you by Ananasthost.com.
Get 15% discount on all shared hosting with the offer code HPR15.
That's HPR15.
Better web hosting that's AnastomFair at Ananasthost.com.
Hi, I'm Nielazo.
I'm new to recording for HPR, and I decided to do my first episode on something I think
it's certainly of interest to hackers, but somewhat overlooked, Lisp's.
I'm going to explain what Lisp's are, introduce some cool things they can do, and hopefully
explain well enough that you can maybe check out using a Lisp for your next project.
Before I start, I want to say I have no formal qualifications in computer science whatsoever.
I've never worked as a software developer, and I've never worked on any large projects.
So take everything I say with a grain or two of salt.
I'm also slightly ill when I'm recording this, so forgive my voice for sounding weird.
Now that's out of the way, let's talk about Lisp's.
And to start, I guess I'll explain what a Lisp is for those who don't know.
This is a simplified definition, and it's certainly narrower than it maybe should be.
Lisp's are a family of programming languages that all shares some interesting traits.
The one that is most obvious is their syntax.
Lisp's all use a syntax called S expressions, which are far simpler than the syntax of any
other language.
Also, all support first-class functions and tail calls, making them ideal functional
programming languages.
They also all support rappel-driven development, which I'll talk more about later.
The most interesting feature of Lisp's to me, though, is their support for meta-programming,
which I'll also go into more detail about soon.
The three most popular Lisp's are common Lisp, Scheme, and Closure.
Let's start with the most obvious feature of Lisp's, S expressions.
S expressions make up the basic syntax of all Lisp's, and they're incredibly simple.
The only significant symbols are the open and close parentheses.
That's it.
S expressions are also written in prefix notation, so 1 plus 1 would be plus 1 1 in Lisp.
This confuses a lot of people at first, but it leads to an overall more consistent language,
and they are also incredibly easy to pass for developers of interpreters.
It's very difficult to describe syntax in audio, so I'll put some examples in the
show notes.
To some programmers, this is scary, and they find it difficult to read.
I omit there is a learning curve, but once you get more used to it, you wonder why the
syntax of other languages seem so clumsy and inconsistent.
The simplicity and regularity of Lisp's expressions means Lisp can be edited not just as
text, but structurally.
Addit to plugins like PowerEddit and PowerInfer allow you to directly edit the structure of
your program, which leads to far quicker development.
Speaking of quicker development, people sometimes speak about how much quicker they can develop
software in Lisp's.
This is mostly down to another key feature, Ripple Driven Development.
Ripple is a short term for a redeveloped print loop.
This basically does what it says on the tin.
It reads in some code, evaluates it, prints out the result, and then loops around.
Now, you might be thinking, so what?
Python has a Ripple, JS has a Ripple, what's new?
But the difference is Lisp Ripples tend to do more than just that.
A traditional development workflow with a language like C is write, compile, execute.
You write your code, compile it, and execute it.
Languages like Python remove the second step, so it becomes write, execute.
Python also has a Ripple, but it's disconnected from the rest of a Python development environment.
It's useful for quick prototyping, but you won't be using it while you write your actual
application.
Lisp Ripples are very different.
They usually have error handling.
You can customize how they run, and they're very tightly integrated into the development
environment.
When I'm writing closure and I want to test a function, I can just select it to my editor
and it will make that function available in my Ripple session so I can test it.
And within the editor, I can access the Ripple and modify parts as it runs to have incredibly
quick iterations.
This integration of the Ripple with the development environment changes programs from being something
written and then run to a completely live and interactive environment.
The speed at which I could update and iterate on my closure programs blew my mind the
first time I used it, and I cannot overstate how great of a tool it is to have.
I won't go into the functional programming stuff here, that would be better suited to
its own episode, but Lisp's were the original functional programming languages, and in my
opinion, still some of the best.
You can expect tail recursion, proper anonymous functions, minimize state, and all that neat
stuff.
So this is great.
We have a functional programming language, with a simple syntax.
We have added tools to make writing get quicker than any other language, and we can very
quickly iterate on changes we make to our program.
We still haven't actually got the most powerful feature of Lisp's, home of Iconicity and
Macros.
Home of Iconicity is the fact that Lisp code and Lisp data are the same thing.
Your program is an S expression tree, which is also the way data is commonly represented
in Lisp's.
This allows for powerful meta programming, Lisp sub macros which work similarly to functions,
but instead of returning a value, they return S expressions.
And these aren't like C's text substitutions, they are insanely powerful.
You can do anything in a macro, you can do in the rest of your programs, which leads
to insane extensibility.
For example, closure has libraries that add features like pattern matching, or even prolog
esch logic programming, and these are nothing more than libraries that contain macros.
I have no chance of being able to properly explain all of meta programming in this episode,
but I encourage you to check it out.
Using macros and meta programming, you can also modify and build the language around
what you want to do.
For example, overtone, which is a closure library to create computer music, contains macros
which add new constructs to closure specifically for music, like constructs for defining instruments
and a global metronome and timing system.
So, why do I like Lisp's?
Because I can program a whole lot quicker than in other languages, and I can program functionally,
which I prefer over other paradigms.
I can modify the language as I see fit to make doing exactly what I want to do easier,
and I can have edited tools that mean I have to do a whole lot less typing.
Hopefully, after this episode, you want to give Lisp's a shot, and if you do, I recommend
learning scheme with the schema box, the little schema, and the season schema.
However, those are quite academic rather than real world.
If you want a more practical approach, idlo enclosure, it's the most practical real world
Lisp, and it has plenty of great resources.
I learned using a book called Closure for the Brave and True.
I heard this episode has been informative, interesting, or at least some good background
noise for whatever you're doing, and I would like to thank HPR for providing a platform
for podcasts like this.
Hey, this is Neil Arzo, when I'm editing this, I'm sorry that this was so wooden.
Like, I really do care about Lisp, but it's hard for that to come across when I'm reading
off a script.
You've been listening to Hecker Public Radio at Hecker Public Radio dot org.
We are a community podcast network that releases shows every weekday, Monday through Friday.
Today's show, like all our shows, was contributed by an HPR listener like yourself.
If you ever thought of recording a podcast, then click on our contributing to find out
how easy it really is.
Hecker Public Radio was founded by the Digital Dove Pound and the Infonomicon Computer Club,
and is part of the binary revolution at binwreff.com.
If you have comments on today's show, please email the host directly, leave a comment on
the website, or record a follow-up episode yourself.
Unless otherwise status, today's show is released on the creative commons, attribution,
share a like, 3.0 license.