F# is a functional-first language targetting .NET, JavaScript and other runtimes. Projects related to F# can take a number of different forms, ranging from interesting libraries for F# to F# language extensions or projects related to the compilation of F#. If you are interested in F#, we can discuss possible different ideas!

  • Generating Types from Types via Type Providers. Type providers are an F# mechanism that makes it possible to generate types “behind the scenes” based on external information such as database structure (for data access). Currently, they can take only very limited information as inputs (string constants). If the compiler could pass user-defined types as parameters to a type provider [1], this could be used for interesting meta-programming tools. The aim of the project is to modify the F# compiler and showcase the possible uses of the new meta-programming capabilities.

  • Compiling F# to (Whatever You Want). F# has been built for .NET, but thanks to Fable [2], it can target JavaScript and a couple of other ecosystems. There are still a lot of places where one cannot use F# though! The aim of this project is to extend Fable to support various other compilation targets. This could be other language ecosystems (Lua for game scripting), embedded systems (Micro Bit), low-level targets (LLM, Graal, Web Assembly) or weird things (Excel spreadsheets, smart contracts).

References