This talk, I gave at the 6th ML Day (Meta Language) event in Tokyo, introduces strymonas, a library design and implementation of stream fusion using Multi-Stage Programming and part of the new metaprogramming facilities, proposed for Scala 3.
The original implementation of strymonas was done in BER MetaOCaml and Scala using LMS. Since then it was ported in Scala 3. In the talk I introduce the key features of the new metaprogramming facilities, focused on what was needed for the port (inlining, staging/runtime code generation).
Strymonas is a joint work with Oleg Kiselyov, Nick Palladinos and Yannis Smaragdakis. The talk is based on my POPL '17 talk about Strymonas and the Scala Days '19 talk by Nicolas Stucki. Nicolas Stucki works at LAMP/EPFL implementing the mechanisms of quotes, splicing and inlining that constitute part of the metaprogramming facilities in Scala 3.