What I learnt at ICFP/SPLASH 2025 about OCaml, Hazel and FP / Oct 2025 / DOI
This is part 5 of a See also in the ICFP25 series: chairing PROPL25, the OxCaml tutorial, multicore at Jane Street and Docker, post-POSIX IO and what I learnt.
In addition to giving a bunch of talks about
Hazel live programming and type level debugging
I've been wanting to try to do something with Hazel ever
since
We explore how to provide programmers with an interactive interface for explaining the process by which static types and dynamic casts are derived, with the goal of improving the debugging of static and dynamic type errors.
To this end, we define mathematical foundations for a decomposable highlighting system within a bidirectional system, and show how these can be propagated through dynamic types in a cast system. Our prototype implementation in the gradually typed Hazel language includes a web-based user interface, through which we highlight the importance of type level debugging. -- Decomposable Type Highlighting for Bidirectional Type and Cast Systems, Carroll 2025

One issue we had during this project was finding a decent corpus of functional
code with errors to use to test out Max's debugger. Hazel's a pretty young
language, and finding a large codebase is difficult, let alone a bunch of code
with errors.

With Patrick's transpiler, we grabbed Eric Seidel's corpus of ill-typed OCaml that he built for his research on dynamic witnesses for static type errors. Max successfully used this translated corpus to build his type-level debugger, and is planning to continue to work on this in his Part III project this year.
Three Steps for OCaml to Crest the AI Humps
I've been

Aside from the very sensible guidance on MCP and tools, I discovered a couple of things from this work:
Sadiq Jaffer found terminal-bench and added an OCaml GC debugging task. This has the effect of getting the frontier AI labs to point their mega training tasks at OCaml-related problems, thus making a rising tide for everyone! And looking at the history of the task, other labs are raising the timeout on Sadiq's task, meaning that fixing bugs in the OCaml GC is right at the top end of difficulty. Let's get more problems into terminal-bench!- It also surprised me just how good the Qwen coder models are on simple OCaml tasks. Local models are fairly far behind Claude's, but the gap is closing as the innovation moves to the agentic context management. I'm excited to see
Thibaut Mattio 's work on Spice (see his FunOCaml talk) as that combines these local models with OCaml-specific context management.
Formally verified garbage collector for OCaml
Sheera Shamsu gave a fantastic talk on building a formally
specified garbage collector for OCaml to a very crowded room! This was rather
topical given our

[...] we propose a strategy for crafting a correct, proof-oriented GC from scratch, designed to evolve over time with additional language features. Our approach neatly separates abstract GC correctness from OCaml-specific GC correctness, offering the ability to integrate further GC optimizations, while preserving core abstract GC correctness. As an initial step to demonstrate the viability of our approach, we have developed a verified stop-the-world mark-and- sweep GC for OCaml. The approach is mechanized in Fstar and its low-level subset Lowstar. -- A Mechanically Verified Garbage Collector for OCaml, Shamsu et al 2025
Chatting to

Haskell and OCaml, the Twain Shall Meet?
Most "wonderful ICFP experiences" usually include crossing the lines to go hang out with other language communities.
Back in 2014, I stayed up all night before my

Richard talked about his experiences with being both an OCaml and Haskeller, and went through a series of examples illustrating the differences between the two. He didn't get very far before the audience got involved, with both Haskellers and OCamlers putting their 2c in! For that reason, the stream recording might not work so well.
It's worth watching the talk rather than me going through each of his examples,
but I did have a long morning coffee with

I think it's really important to have these cross-community in-person moments. One call to action in Richard's talk was for us to consider having a unified "Haskell/ML Symposium" where long-form research papers could be shared, with shorter language-specific workshops. One audience member asked why this couldn't just be the ML Workshop, and Richard promptly pointed out that it has "Higher-order, Typed, Inferred, Strict" in the title! Just excising one word might unify two communities long split for decades...
Aside from language matters, I think it would be a good idea to bring more of the functional programming community together more often outside of the "main ICFP track" (which is high pressure and quite squeezed for time with little discussion outside the corridor tracks). I really miss CUFP, since for a decade this was where the functional hackers would all meet up towards the tail end of the main conference. This year however, the workshops were run in parallel with the main ICFP and OOPSLA, which I think sadly diluted the community bonding a bit.

I got Shriram'ed about our Cambridge teaching
Speaking of teaching, noone in the world can school me better than
The SMoL (Standard Model of Languages) has a nice web interface and quiz, just like the one he helped on for our
- If students master SMoL, they have a good handle on the core of several of these languages.
- Students may find it easier to port their knowledge between languages: instead of being lost in a sea of different syntax, they can find familiar signposts in the common semantic features. This may also make it easier to learn new languages.
- The differences between the languages are thrown into sharper contrast.
- Students can see that, by going beyond syntax, there are several big semantic ideas that underlie all these languages, many of which we consider “best practices” in programming language design. -- Fixing Standard Misconceptions about Program Behaviour, 2024
Much like
I also really liked the Pyret approach of starting to teach using tables as a core datastructure, and not lists or arrays. However, I'll need to think hard about how this teaching model would work under Cambridge's quirky supervision model.
This is on my queue to work on over the winter, while
- Data-Centricity: A Challenge and Opportunity for Computing Education, CACM 2025.
- Modeling as a core component of structuring data, Konold 2017.

Deterministic WASM
Webassembly has also gone a long way since I
After that, Ben Titzer told me about WALI which is an alternative approach to WASI that simply exposes Linux kernel interfaces straight to the wasm runtime. I'm rather amenable to this given my
Wrapup thoughts on Singapore
Overall, I had a brilliant -- if exhausting! -- week in ICFP in Singapore. I loved the city, I loved the vibes around the conference, and it was totally worth the trip. Huge thanks to Ilya Sergey and the organising team for making this happen!



10th Oct 2025: Typo fixes spotted by Shriram.
References
- Madhavapeddy (2025). Oh my Claude, we need agentic copilot sandboxing right now. 10.59350/aecmt-k3h39
- Madhavapeddy (2025). Foundations of Computer Science. 10.59350/qms3q-ymn65
- Madhavapeddy (2025). Holding an OxCaml tutorial at ICFP/SPLASH 2025. 10.59350/55bc5-x4p75
- Madhavapeddy (2025). What I learnt at ICFP/SPLASH 2025 about OCaml, Hazel and FP. 10.59350/w1jvt-8qc58
- Madhavapeddy (2025). It's time to go post-POSIX at ICFP/SPLASH 2025. 10.59350/mch1m-8a030
- Madhavapeddy (2025). A Roundup of ICFP/SPLASH 2025 happenings. 10.59350/4jf5k-01n91
- Madhavapeddy (2025). Programming for the Planet at ICFP/SPLASH 2025. 10.59350/hasmq-vj807
- Madhavapeddy (2025). Webassembly on exotic architectures (a 2025 roundup). 10.59350/ycqj1-b3996
- Madhavapeddy (2025). Jane Street and Docker on moving to OCaml 5 at ICFP/SPLASH 2025. 10.59350/3jkaq-d3398
- Seidel et al (2016). Dynamic witnesses for static type errors (or, ill-typed programs usually go wrong). 10.1145/2951913.2951915
- Shamsu et al (2025). A Mechanically Verified Garbage Collector for OCaml. Journal of Automated Reasoning. 10.1007/s10817-025-09721-0
- Youn et al (2024). Bringing the WebAssembly Standard up to Speed with SpecTec. Artifact for "Bringing the WebAssembly Standard up to Speed with SpecTec". 10.1145/3656440
