5

I would like to know what are some negative points / cons / bad / limitations things about the F# (sharp) language.

I've been searching on google:

  • f sharp language limitations
  • f sharp language cons
  • f sharp language negative points
  • f sharp language bad things

And no result about it. This is the reason of asking this here.

The objective of this question is NOT to choose my next language to learn but to make a document for my school about the f# language. But I cannot find any negative points.

Robert Harvey
  • 178,213
  • 47
  • 333
  • 501
Totty.js
  • 15,563
  • 31
  • 103
  • 175
  • This reads like a gorilla v. shark question (http://blog.stackoverflow.com/2011/08/gorilla-vs-shark/) – John Palmer May 30 '13 at 10:08
  • I cannot find anything bad about it on the internet, why that? I'm asking genuine help, not kidding... – Totty.js May 30 '13 at 10:09
  • @Totty Because "good" and "bad" are usually highly subjective and depend on person's preference and experience. Only little (to nothing) of every language can be proven (by math or by test) to be bad or counter-productive. – Euphoric May 30 '13 at 10:19
  • So if my teacher asks me what are the bad points I will tell him: "Well, it depends on the person's preferences. "; -him: "I see you are very smart!", oh come on! I'm just asking for a reason and it's explanation about why is bad, or why you don't like it... If not, please tell me a way to solve my problem. thanks – Totty.js May 30 '13 at 10:22
  • 1
    @Totty - reasons why this is a bad question. 1) Some people might say that as F# doesn't support inline asm it is bad, whilst others might like it. 2) Most of the people here really like f# anyway so you won't get good answers anyway – John Palmer May 30 '13 at 10:24
  • On a negative side: lack of compile-time metaprogramming (for me it's a complete show stopper for a language). Plus, all the well known gotchas of Hindley-Milner, applicable to all the ML-family languages. – SK-logic May 30 '13 at 10:25
  • @SK-logic: Thanks for your answer; to John Palmer: Then why do even exists reviews that shows pros and cons? Are all of them stupid? IMO everyone can see the opinion of others and think for themselves. But if you have no opinion what you do?... I don't want to argue, but this can be warnings for newcomers. If for them is not important then ok, if not, they will think again. – Totty.js May 30 '13 at 11:16
  • 2
    These questions are fine to ask, they are just not a good fit for SO - read the blog post I linked in my first comment – John Palmer May 30 '13 at 11:45

1 Answers1

8
  • For some people, typically newcomers to the language, the powerful type inference can be offputting
    • It can seem as if the language is dynamic and thus not come with the same guarantees as you expect from a statically typed language. However it's quite to the contrary in reality since F# with its ML heritage is more statically correct than many traditional static languages.
    • Some people find that the lack of type annotations can sometimes make the code less readable - especially if you do not have access to an editor which can highlight the inferred types for you. A good example of this is doing code-reviews or just looking at other peoples code on github.
  • Compared to its .NET brethren C# it lacks a lot of tooling. Even simple refactoring doesn't work very well in Visual Studio. Working with GUIs is also not as well supported since you can't work with XAML files the same way you can in C#
  • F# lack support for functors, it's not really a huge problem but it's something that people coming from OCaml might miss, for more information see this question.
Community
  • 1
  • 1
Simon Stender Boisen
  • 3,413
  • 20
  • 23
  • thanks for your answer, ML: stands for meta-language or the programming language ML? – Totty.js May 30 '13 at 10:52
  • Here it says that has type annotations: http://www.fincher.org/tips/Languages/fsharp.shtml – Totty.js May 30 '13 at 11:07
  • It's ML the programming language. Also by my comment about lack of type annotations I didn't mean that the language doesn't have type annotations but rather that programmers typically doesn't apply type annotations when they write F# code. Since F# has very powerful type interference it's not necessary - which is awesome - but the downside of that is that it can be less readable when you read it outside an editor which will tell you the inferred signature and types of your expressions. – Simon Stender Boisen May 30 '13 at 11:29