Datatype-generic programming is a powerful technique that allows you to parameterise your functions by the shape of the types that they are invoked with. A simple example of datatype-generic programming is a pretty-printer for arbitrary record types – it inspects the structure of the record type at runtime to find its fields and then prints the value of each field in turn.
In .NET languages, datatype-generic programming is typically achieved through a combination of generic type parameters and reflection, but this method suffers from the proliferation of obj values and therefore unsafe code.
In this talk, we’ll take a look at three libraries:
• TypeEquality - ahttps://github.com/G-Research/TypeEquality
• HCollections - ahttps://github.com/nickcowle/HCollections
• TeqCrate - ahttps://github.com/nickcowle/TeqCrate
We’ll show that when taken together, these libraries offer a type-safe abstraction layer over simple reflection. By using them, we can create our own libraries that are not only type-safe with respect to their public API, but whose internal implementations are completely type-safe as well.
YOU MAY ALSO LIKE:
- Lightning Talk: Existentials - Playing Hide and Seek With Your Types (SkillsCast recorded in April 2018)
- Functional Concurrency in .NET with C# and F# (in London on 9th - 10th December 2019)
- Modern development with Java (in London on 9th - 11th December 2019)
- Scala eXchange London 2019 (in London on 12th - 13th December 2019)
- F# eXchange 2020 (in London on 2nd - 3rd April 2020)
- Designing embodied human-computer interactions with audio processing parameters (in London on 22nd October 2019)
- Keynote by Konrad Kokosa: What’s New in .NET Core 3.0 and .NET 5.0 for Performance and Memory-Aware Folks? (in London on 29th October 2019)
- Higher-Order Type-Level Programming (SkillsCast recorded in October 2019)
- Stick to Simple Haskell (SkillsCast recorded in October 2019)
Type-Safe Datatype-Generic Programming in F#
Professional F# developer by day, amateur type theorist by night, Nick enjoys drawing ideas from the world of functional programming to create robust and safe software for the finance industry.