Mo6nzxxfkg5lknbxz30n
SkillsCast

Meta-Programming Madness with the Mixin Type Provider

17th April 2015 in London at Skills Matter

There are 11 other SkillsCasts available from F# eXchange 2015 - the conference on F#

Please log in to watch this conference skillscast.

515298811 640

F#'s erasing type providers are a ground-breaking feature that (amongst other things) remove the need for a whole lot of boilerplate code which you would otherwise have to write or generate. Does this mean that you never have a need to generate code in F#? Of course it doesn't! Unfortunately, F# has no real code-generation story, other than generative type providers - which are hard to write and extremely limited with what they can generate. if you want to generate some record types that bridge the gap between the erasing type providers and the rest of your program, you are going to have to do it manually or write a code generator yourself.

The new Mixin type provider – which is not really a type provider at all in the traditional sense - leverages the existing type provider infrastructure and allows you to evaluate compile-time F# metaprograms. These metaprograms, with the help of a compositional code generation DSL, produce F# code that is then compiled into assemblies. In this manner, we can write idiomatic style F# and easily produce everything from [<Literal>] values to feed other type providers, to record types and discriminated unions, even computation expressions and other type providers!

Powering these metaprograms with existing erasing type providers and F# libraries, then bringing everything together within the standard F# compilation pipeline, the Mixin provider delivers a powerful code generation story for F#. Plus, the code generation DSL is called SquirrelMix, which should be enough to warrant you coming to this talk on its own.

YOU MAY ALSO LIKE:

Thanks to our sponsors

Meta-Programming Madness with the Mixin Type Provider

Ross McKinlay

Ross has been accidentally wiping hard drives and melting transistors into his fingers since he can remember. He has over 20 years programming experience in a wide variety of different languages and technologies, ranging from games and financial markets to fraud prevention and investigation. He has more recently been working on F# type providers. He loves squirrels, physics, electronics, robotics, functional programming, programming languages in general and squirrels.

SkillsCast

Please log in to watch this conference skillscast.

515298811 640

F#'s erasing type providers are a ground-breaking feature that (amongst other things) remove the need for a whole lot of boilerplate code which you would otherwise have to write or generate. Does this mean that you never have a need to generate code in F#? Of course it doesn't! Unfortunately, F# has no real code-generation story, other than generative type providers - which are hard to write and extremely limited with what they can generate. if you want to generate some record types that bridge the gap between the erasing type providers and the rest of your program, you are going to have to do it manually or write a code generator yourself.

The new Mixin type provider – which is not really a type provider at all in the traditional sense - leverages the existing type provider infrastructure and allows you to evaluate compile-time F# metaprograms. These metaprograms, with the help of a compositional code generation DSL, produce F# code that is then compiled into assemblies. In this manner, we can write idiomatic style F# and easily produce everything from [<Literal>] values to feed other type providers, to record types and discriminated unions, even computation expressions and other type providers!

Powering these metaprograms with existing erasing type providers and F# libraries, then bringing everything together within the standard F# compilation pipeline, the Mixin provider delivers a powerful code generation story for F#. Plus, the code generation DSL is called SquirrelMix, which should be enough to warrant you coming to this talk on its own.

YOU MAY ALSO LIKE:

Thanks to our sponsors

About the Speaker

Meta-Programming Madness with the Mixin Type Provider

Ross McKinlay

Ross has been accidentally wiping hard drives and melting transistors into his fingers since he can remember. He has over 20 years programming experience in a wide variety of different languages and technologies, ranging from games and financial markets to fraud prevention and investigation. He has more recently been working on F# type providers. He loves squirrels, physics, electronics, robotics, functional programming, programming languages in general and squirrels.

Photos