Functional Geekery Episode 130 – Ivan Čukić

In this episode I talk with Ivan Čukić. We talk his introduction to functional programming, adopting Scala, his book “Functional Programming in C++”, the C++ communities adoption of functional programming, and much more.

Our Guest, Ivan Čukić

@ivan_cukic on Twitter
Functional Programming in C++
Ivan’s Projects

Discount Code from Manning

As part of this episode Manning has offered listeners of the podcast a permanent 40% discount code, good for any of their products, in all formats.

Use code podgeekery20 for your 40% discount.

Conference Announcements

Elm Conf is going virtual! Taking place July 15th-17th in your home. The Call for Talks is open and early bird registration has started. Find out more at

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 [@1:40]

About Ivan
Functional Programming in C++
How Ivan was first exposed to Functional Programming
Being taught LISP
Working in Java
Being a big event when Java introduced forEach
“Multi-threaded and shorter to write”
Seeing annotations of a Java program on what would be equivalent in Haskell
Haskell as the background noise in his life
Picking Scala when going back to the JVM
Adopting Scala
Transitioning from a “better Java” to a “worse Haskell”
Akka and influence to any OOP style that might have still existed
Ranges library
What it means to be a Functional Programming Language
“C++ has always been a functional language”
Eric Normand’s Clojure Mid-Cities User Group presentation
Timing of the C++ community’s evolution to functional programming with Ivan’s use of functional C++
Giving a talk about asynchronous programming with Monads
Sean Parent – C++ Seasoning
Deciding to write a book on functional programming in C++
The target audience of Functional Programming in C++
“I don’t see what functional programming in here, it’s just common sense”
Strengths of C++ with functional programming
Lambdas in C++
Having control over everything
Simulating Linear Types in C++ easily vs needing compiler support in Haskell
Where the sane defaults in C++ fit with Functional Programming
immer library for immutable data structures
Topics in the book for people not familiar with C++
“Like all Monad tutorials I claim that mine works and none of the others do”
IO Monad being useless in C++
Ivan’s view of Rust as a C++ Developer
“All the serious projects use the unsafe features of the language”
What Ivan would love to see the C++ community adopt
What is exciting Ivan currently
Bitmap Vector Trie or Ideal Hash Trees
General Recommendations
“Stay Safe”
“Investigate the beautiful world of open source and free software”

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

3 replies on “Functional Geekery Episode 130 – Ivan Čukić”

Ivan, you have done Haskell, it perplexes me how you can claim the IO monad is not “needed” in C++. The IO type is the type in which there are no restrictions. Notice how you can write and read arbitrary pointers using the Foreign.C module. Because you have the IO monad, you also have the option NOT to be in that monad. That is abstraction, it is a feature!

I know C++ will never be a purely functional programming language. But, saying that the IO monad is not “needed” is like saying it is not “necessary” to stop being a undisciplined programmer. Software engineering is all about abstraction. With the advent of effect systems, doing stuff in IO outside the very outer layer of your program is a sign of a missing DSL, a missing abstraction!

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.