Taking a deeper look at F# TypeProviders and its code generation capabilities and meta-programming positioning, it seems like a compelling value add for morphir-dotnet to support a TypeProvider that would generate a Morphir model.
Describe the solution you'd like
This TypeProvider would allow someone to provide one (or more) Morphir IR files, from which we could generate code that would expose the modules, types, and functions in those files.
Since a TypeProvider allows us to interact with the compiler, we'd be able to also generate compiler errors if there are model errors such as linking errors.
TODO: Add more implementation details (just capturing this as a thought right now)
Describe alternatives you've considered
There are other alternatives that provide similar functionality but I think these are all just point in time items as I can see us executing the following over time:
Create a Morphir to F# code generator using any of or a combination of (FCS, Fantomas, etc)
Create a Myriad plugin that would give us more power around code-generation and meta-programming
Create an Elm TypeProvider that generates Morphir IR from Elm (doing this as a type provider would allow us to get compile time support
Taking a deeper look at F# TypeProviders and its code generation capabilities and meta-programming positioning, it seems like a compelling value add for
morphir-dotnet
to support a TypeProvider that would generate a Morphir model.Describe the solution you'd like
This TypeProvider would allow someone to provide one (or more) Morphir IR files, from which we could generate code that would expose the modules, types, and functions in those files.
Since a TypeProvider allows us to interact with the compiler, we'd be able to also generate compiler errors if there are model errors such as linking errors.
TODO: Add more implementation details (just capturing this as a thought right now)
Describe alternatives you've considered There are other alternatives that provide similar functionality but I think these are all just point in time items as I can see us executing the following over time: