3 ms·
Can you make a language that looks like F# and compiles? Sure. Can you make F# the language meaningful on other VMs? Not really, as F# is a deep, deep, .Net
by bonesss 8y ago
Can you make a language that looks like F# and compiles? Sure.
Can you make F# the language meaningful on other VMs? Not really, as F# is a deep, deep, .Net language.
This isn't about abstraction or syntax, it's that every concept, feature, and element of the toolchain bases itself on .Net capabilities and considerations. From referencing libraries, to scripting, to type generation at specific points in the compile cycle to support Type Providers... Async computation blocks...
Remember, F# came from MS research based on the established working .Net framework, and was tighly tied to fundamental framework improvements (like generics and dynamics). It was built by hardcore .Netters, it's the first "true" .Net language, and it bases major language features on deep-down .Net capabilites not found in other VMs.
The point of the quote is that if you were to try this, at best you'd get "OCaml Over There", not "F#", since F# without .Net is "OCaml". It's not the syntax, it's the deeply intertwined nature of everything else.
- vram22 8y ago>Remember, F# came from MS research based on the established working .Net framework, and was tighly tied to fundamental framework improvements (like generics and dynamics). It was built by hardcore .Netters, it's the first "true" .Net language, What are "dynamics" in this context? >and it bases major language features on deep-down .Net capabilites not found in other VMs. Can you give some examples of that?
- profquail 8y ago“Dynamic” in GP’s answer is referencing .NET’s support for dynamic typing (which works in both C# and F#): https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/types/using-type-dynamic https://docs.microsoft.com/en-us/dotnet/csharp/programming-g...
- vram22 8y agoThanks, will check that out.
- kazinator 8y agoThat just looks earth-shatteringly non-portable; it cannot possibly exist anywhere but .NET.
- loeg 8y agoAhem. https://docs.oracle.com/javase/8/docs/technotes/guides/vm/multiple-language-support.html#invokedynamic https://docs.oracle.com/javase/8/docs/technotes/guides/vm/mu...