Functional Geekery Episode 141 – Shriram Krishnamurthi

In this episode, I talk with Shriram Krishnamurthi. We cover his introduction to functional programming, Racket and #lang, Static vs Dynamic Typing, Bootstrap and Pyret, How to Design Programs, and much, much, more.

Our Guest, Shriram Krishnamurthi

ShriramKMurthi on Twitter
shriram on Github Shriram’s University of Brown Page Shriram’s Blog/Essays Brown PLT Blog


Strange Loop 2022 is taking place September 23rd and 24th in St. Louis, Missouri. Visit to keep up to date and to register.

RacketCon is back in person for its 12th year. Hosted at Brown University in Providence, Rhode Island, RacketCon will be October 28th-30th. Visit for more information.

Some of you have asked how you can support Functional Geekery, in that vein, Functional Geekery now has a Patreon Page.

If that is one of the ways you would like to show your support, you can find out more at

Topics [@1:31]

Welcome Shriram
Brown University
PLT Scheme Family
How To Design Program
How Shriram got into programming
Structure and Interpretation of Computer Programs
“From then, it was just like unicorns, and I’ve been in the future ever since.”
Dan Friedman story
Rice University
Matthias Felleisen
Matthew Flatt
Robby Findler
Why Shriram didn’t work with Matthias in Grad School
Bob Harper
Practical Foundations of Programming Languages
Daniel Jackson
Moshe Vardi
Dynamic vs. Static Typing and Shriram’s view on Types
Pyret as an optional typing experience
Perspectives from a Programmer versus a Verification Person at heart
TeJaS: Retrofitting Type Systems for JavaScript
Gradual Soundness: Lessons from Static Python
“We do not fully understand programmer thought processes.”
“What would happen if we tried to crowd-source language design?”
“Give people the language they want.”
Plait language
Retrofitting types systems onto existing dynamic languages
Pyret built with types in mind from the beginning
“We want you to live in a rich world of expression, not an impoverished world […] of data types you can count on one hand.”
How To Design Programs
Little Schemer
SICP as a magic trick
“It’s almost like the dual of SICP.”
“Go ahead and type. Let’s see what you can do.”
Making traceability as central as possible
Kathi Fisler
Data-Centric Introduction to Computing
Emmanuel Schanzer
Trying to introduce computing to school
Using exiting teachers to teach computing in existing disciplines
Teaching students by them creating a video game as a way to teach math
Kathi Fisler’s presentation at LambdaDays 2021
All of Bootstrap’s programming is purely functional
Pyret as a no-research language
Focus on the user experience
“There are teachers that have built up a pedagogy around the use of error messages.”
“I’m left-handed, and I sometimes joke it’s [parenthetical syntaxes] the same sort of thing.”
Building as a language that runs in the browser for zero hassle
Tool and Language Building’s relation to Racket
“If you were deeply conservative, you wouldn’t be using Racket.”
“These are the same people who, if their programming language didn’t give them separate compilation, they would just be up in arms.”
Mystery Languages
The Curse of Lisp
The Bipolar Lisp Programmer
“We have lost track of this very foundational fact, that programming is a kind of super-power. It’s the ability to make worlds and to sort-of bend things to our will, that is almost scary.”
Roman Numbers #lang
Racket is a language as a service
Translated FrTime to JavaScript, resulting in Flapjax
“Everything is a language.”
RacketCon 2022
Making a pitch for “our ignorance.”

As always, a giant Thank You goes to David Belcher for the logo design.