Functional Geekery Episode 112 – Micheal Sperber

In this episode I talk with Micheal Sperber. We talk his introduction to programming and functional programming languages, important commonalities across languages, power of syntactic abstraction, teaching programming to beginners and experienced programmers, Concurrent ML, and more.

Our Guest, Micheal Sperber

@sperbsen on Twitter

Conference Announcements

CodeMesh is coming up November 8th and 9th in London. For more information, and to keep an eye open for registration, visit

Clojure SYNC will be taking place in New Orleans on February 15th & 16th of 2018. For more information and to register visit:

LambdaDays 2018 will be taking place February 22nd and 23rd in Kraków, Poland. For more information, and to register, visit

BOB 2018 is coming up in Berlin, Germany on February 23rd, 2018. For more informationa, and to register, visit

:clojureD will be following BOB 2018 in Berlin, Germany on February 24th, 2018. For more information, and to register, visit

If you have a conference related to functional programming, contact me, and I will be happy to announce it.


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 [@3:03]

About Micheal
How Micheal got into software
How Micheal’s interest in teaching related to his interest in software
Micheal journey of learning different languages
Germany’s National Competition of Programmers for high school students
Finding a community of people to learn from
How Micheal came across functional programming
Structure and Interpretation of Computer Programs
What is the core that Micheal finds across functional languages
Type Based Design (regardless of static or dynamic typed)
Macros as the “feature wish” for all languages
Hygienic Macros
Power of a common, well known, syntactic abstraction
What Micheal has found about teaching functional languages
“Your students are different than you”
“You have to put some distance between what you teach and what you love”
“You need to have languages designed for teaching, and tooling designed for teaching”
Dr. Racket
Commonality of teaching beginning programmers and teaching experienced professionals
Common principles for teaching as starting points
“Keep excitement out of it”
Program by Design
How to Design Programs
Design Recipe
Using types about your data to match information in your problem statement
Lessons from taking the teachers’ excitement out of the curriculum
“Here’s this thing, we don’t care if you love it or not, just do your thing”
Letting the students get excited for themselves.
Difference in thinking in types between dynamically and statically typed languages
Concurrent ML
Overview of similarity and differences in concurrency across functional programming languages
Messages and immutable data
Erlang process model for concurrency
Overview of Concurrent ML
Algebra of Rendezvous
“It’s like Christmas when you pull it out of the box”
Composition of Rendezvous across different concurrent mechanisms
Wittgenstein “The limits of your language are the limits of your world”
Going back to other concurrency mechanisms after knowing about Concurrent ML
Concurrent ML as a way of thinking
Standard ML of New Jersey
Extracting Concurrent ML concepts as a library
Concurrent Programming in ML
Concurrent ML as the best book on concurrent programming
John Reppy Ph.D. thesis
Concurrent ML book on covers multiple paradigms
Mike’s upcoming CodeMesh presentation
International Conference on Functional Programming
Funktionale Programmierung
BOB Konf

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