Conversation started Mar 24, 2014 at 16:06.
Mar 24, 2014 16:06
Feb 5 at 20:14, by Jimmy Hoffa
@Mike F# is an improvement over C#, however it has one huge flaw that makes working with it painful, though some tools do exist to lessen the pain of that flaw. The flaw is the in-order type checker which both disallows recursive type definitions (very painful for FP but not super relevant to OO) and requires you to order the files in your project file to be in dependent ordering
Feb 5 at 20:35, by Jimmy Hoffa
@Mike F# has some really cool stuff in the computation expression space that really makes it wreak of research fun project for someone at MS rather than a real large-usage enterprise focused language because it's cool research stuff that it has but it's fundamentals like interoperability and such are pretty terrible
Feb 5 at 20:36, by Jimmy Hoffa
and the fact that they've had multiple iterations over the language (it's V4.0 now I think?) without resolving those basic not extremely difficult problems or really giving it good tooling that makes dealing with those flaws easier tells me again it was somebody's fun project and MS has no care at this point
Jan 8 at 5:28, by Jimmy Hoffa
@RobertHarvey Eh... F# is C# with window dressing...
Jan 8 at 5:29, by Jimmy Hoffa
Most instructionals on F# out there do not utilize any of the things that are worth paying attention to with it; the concept of expressions and purity, F# is an imperative programming language after all and many of the tutorials will show you how to code it that way
Jan 8 at 5:30, by Jimmy Hoffa
Plus it's klunky as fuck to use and it will get in your way if you try to learn the ML type system through it because it's broken type checker won't let you do proper ML types
Jan 8 at 5:35, by Jimmy Hoffa
my problem is with when you try learning ML stuff and in F# you type:
type Val = Str of string * Name | Int of int * Name
type Name = Name of Val

then think you have a bug because F# can't cope with mutually recursive types
Um... Thanks. :D
Jan 8 at 5:35, by Jimmy Hoffa
while a proper ML has concepts like that at their core
Jan 8 at 5:37, by Jimmy Hoffa
You do stuff like that constantly in MLs, F# however is incapable because it's got object types which have undecidable inference therefore they couldn't do proper terminating inference in F# over all the ML types etc and without guaranteed termination the compiler could just choke on your F# so they canned mutually recursive ML types
Jan 8 at 5:38, by Jimmy Hoffa
Then there's the whole "Why won't it find my type?" -> "Ohh it's because I defined it in a file I created after that file, and the compiler requires type definitions to be in files properly ordered in the project file for the compiler to parse them top-to-bottom..."
Jan 8 at 5:39, by Jimmy Hoffa
When you find yourself hand-editing the project files to reorder files since the compiler cannot accept the files out-of-order you know your compiler is just broken or it's maintainers didn't care (hint: the latter)
 
Conversation ended Mar 24, 2014 at 16:08.