Live data from Hacker News

Introducing F# 4.0

infoq.com

51–60 of 73 posts

Re: Introducing F# 4.0

#51
post #19

Earlier quoted context omitted.

If I may, I think you're harvesting downvotes (very light grey as I write this) because your phrasing could read that Microsoft the company is frightening you because they're the Big Evil, etc... this being one of the inevitable (and inevitably tiresome) derailing comments that enters any thread about Microsoft and immediately gets downvotes because Boring. After I re-read your comment it seemed you might be saying M…

That's fair. I say Microsoft "scares" me because it's historically "uncool," which means it's likely that the (open source) developer community is less dynamic and comprehensive. People are rightfully picky about the work they do for free!

It used to scare me because it abused its market dominance in much the same way Google does and because its ultimate end goal is inevitably end user lock-in, which is something I want to avoid at all costs.

It's true that they have changed over the last couple of years and have adopted open source, etc., but it seems to me that this isn't really because they've become intrinsically "less evil" - it's just because the market has forced their hand, and they now have to choose between future irrelevance and not being evil now.

I am pretty confident that if they once again gain a powerful monopoly like they used to have, they'll abuse it just like they did the last time.

One way they could do that is to bait and switch on open source/linux versions of .NET.

I've looked at F# and it is a nice language, but I don't really want to do any OSS development on it unless Microsoft somehow convinces me with a license that handcuffs future Microsoft so that they won't be able to do that (e.g. GPL, assuming that would work. IANAL).

Re: Introducing F# 4.0

#52
post #39

Earlier quoted context omitted.

You are just proving what OP says "the .NET community is filled with closed-minded folks that will never admit that their tooling sucks". Unfortunately, you are not seeing the whole picture.

What ? I developed web applications with Clojure/CLJS Python/Django, I did C++ development for years and a large part of the code in my current project is in Python because the tool we use (Blender) uses Python as a scripting language. I agree that .NET has less opensource tools because a lot of things are just provided by Microsoft out of the box, and there are many areas it's not popular - but there are many OSS pr…

>there are many OSS projects and they match the things I saw in Python and Clojure community.

Where's the Django for .NET?

Re: Introducing F# 4.0

#53

Earlier quoted context omitted.

I hope you don't get downvoted, those seems like reasonable questions. I'm part of the F# community I guess, so I suppose I could try and answer! I'm not sure the F# community is the same as the broader .NET community. I think at the moment, with functional programming being a little more niche still, it's perhaps quite self-selecting. It has a lot of people in who really care. I think that's a good thing - I hope -…

I wish there was a some info on how to get CLR (not Mono) get up and running on Mac with C#, F# etc.

You can run .NET Core on OS X[1] (and Linux, FreeBSD and Windows). There are plenty of rough edges still, but we're adding more functionality and making it more capable each day. Soon enough, all the .NET Core ports will be just as capable as the Windows version.

ASP.NET 5 still runs Mono by default on OS X, but you can switch to .NET Core with the DNVM tool [2].

Note the blog post from yesterday by the F# team on F# 4. [3]

[1] https://github.com/dotnet/coreclr#get-net-core

[2] https://github.com/aspnet/home#os-x

[3] http://blogs.msdn.com/b/dotnet/archive/2015/04/29/rounding-o...

Re: Introducing F# 4.0

#54

Earlier quoted context omitted.

What ? I developed web applications with Clojure/CLJS Python/Django, I did C++ development for years and a large part of the code in my current project is in Python because the tool we use (Blender) uses Python as a scripting language. I agree that .NET has less opensource tools because a lot of things are just provided by Microsoft out of the box, and there are many areas it's not popular - but there are many OSS pr…

>there are many OSS projects and they match the things I saw in Python and Clojure community. Where's the Django for .NET?

ASP.NET MVC ?

Re: Introducing F# 4.0

#55
post #7

Microsoft scares me, for no good reason. Would, say, a Ruby or node.js-oriented web developer find the F#/.NET community lacking, incomplete, unfriendly, uncool? Is there even a community to speak of? What's to stop a young developer from going against the grain and adopting .NET? (Here come the downvotes. Shun the "hipster." But really, I'm looking for a subjective perspective from somebody on "the other side." I do…

From my experience thus far the .NET community is not friendly to open-source. Yes, open-source projects do exist, but those are few and far between, being either ports from the Java world, or throwaways that failed as commercial projects. There are also instances of bait and switch, as in projects starting as open-source being closed later (e.g. ServiceStack). Also compare RoboVM.com with Xamarin.com. If you'll dig…

> > Would, say, a Ruby or node.js-oriented web developer find the F#/.NET community lacking, incomplete, unfriendly, uncool? Is there even a community to speak of?

> The answer in my opinion is yes. This may change, given recent efforts by Microsoft, however evolution will be slow because the whole ecosystem has to change, not just Microsoft.

A suspicion gnaws at me. I try to rid myself of it but alas, it holds fast and unyielding. That suspicion being: you know very little about the F# community. What statements you make, they seem descendents of generalizations from your experience with the .Net community. Happily, F# is not like the stereotypical .NET community (I must be so specific, in order that I not offend the subset to whom your claims do not apply). There is a strong culture of embracing open tools and code; Microsoft is not looked at for direction beyond what basic support they provide.

The community is neither lacking nor is it unfriendly. It is small, yes. Uncool? Opposite of! But opinions run with tastes. Incomplete is a tricky matter. Certainly it's not going to have as many libraries as Python or the JVM, but neither is it some kind of backwater.

There are excellent build tools like FAKE and paket. Awesome ideas like—why, take a look at how fantastic the HTML type provider is, and it works in real life too! Most of the time =) [http://fsharp.github.io/FSharp.Data/library/HtmlProvider.htm...]

There are tons of cool libraries available, most of them open source, with generous licensing terms. Stuff with Haskell heritage like fparsec, fscheck, the blazing fspickler combinators (serializer) or more computation oriented tools that let you target and run on the GPU or Here: Automatic Differentiation (after which, loss minimizing Machine Learning algorithms are made much easier) [http://gbaydin.github.io/DiffSharp/]. Or the DataFrames library: http://bluemountaincapital.github.io/Deedle/

Type providers also allow easy use of UI builders. Web frameworks and also, js targeting can be reached here: http://fsharp.org/guides/web/. You can target Unity3D and apparently, also the Unreal Engine.

There are interesting projects looking at distributed computation (https://github.com/fsprojects/Cricket and ilk) or light weight concurrency, in Hopac's take on the Pi Calculus.

F# was one of the earlier languages with light weight threads, a solid async story and first class events (pre-reactive trend). Active Patterns (not unique to F# but more common in) take us close to Predicate Dispatch (http://c2.com/cgi/wiki?PredicateDispatching). There is much more I could list and hopefully, I have piqued some interest.

But it's not perfect. Adding Functor support would be very useful. A while ago, in an early Active Patterns paper, there were hints that generalized algebraic datatypes might soon be introduced. Nothing came of that. Higher kindedness is nice but not as much missed—it is my suspicion that, the gains from each level of types that can be parameterized over, quickly saturates.

There are lots of cool projects going on in F#, and while, as a language it's definitely not as powerful as say Scala or Haskell; the tools, libraries and environment, alternate ideas as well as breezy syntax, do make up. Having used them all, I wouldn't say it is any less expressive, it just...prioritizes differently beyond the core functional ideas (REPL, sum/product types, currying, closures, point free application where possible, Hindley Milner inference, immutability by default, pattern matching and deconstruction, etc., etc.).

It strikes a lot of middle ground across many planes, in terms of pragmatism vs functional purity—that is its ML heritage (but perhaps even more so, bargained in exchange for the .NET ecosystem). Most functional languages focus on types in terms of algebra, F# does too but only basically, instead it focuses more on the easy bridging of types with unruly data.

Re: Introducing F# 4.0

#57
I was just discussing F# with my coworkers today. I feel like it doesn't get much attention because neither the OO or the FP camps want to own it. It's too different for OO people, and FP people won't find it pure enough. Is that correct, or are my observations and inferences way off?

Re: Introducing F# 4.0

#58

I've been writing most of my utility code in F# for the past few months, is there anything that you guys DON'T like about it? I'm really enjoying how terse it is in comparison to C# and haven't really run into anything that's bothered me, besides Xamarin Studio being bloated.

Could you post any comparison code demonstrating the terseness, or suggest a good site that might demonstrate this?

http://fsharpforfunandprofit.com/posts/classes/ starts off with a C# vs. F# class declaration example. Particularly when you want to create a class with 3 member properties and a constructor accepting those 3 properties as parameters, you can achieve that in 4 lines of F# vs. 8 (non-curly brace) lines of C#.

This sort of conciseness is found all over the language as you keep digging deeper. I really recommend Scott Wlaschin's (link author) entire site. The best online resource for learning F#, IMO.

Re: Introducing F# 4.0

#59

I was just discussing F# with my coworkers today. I feel like it doesn't get much attention because neither the OO or the FP camps want to own it. It's too different for OO people, and FP people won't find it pure enough. Is that correct, or are my observations and inferences way off?

The lack of attention is that Microsoft doesn't want to put too much cash into it, and hasn't figured out the marketing message. Microsoft has sold the message that F#'s for strange high-IQ people in finance or science and so on. A lot of ".NET developers" are just confused. I mean, ffs, look at C#'s "var" keyword. Even some highly respected people that worked at Microsoft didn't understand it and called it "dynamic typing". If high-up "engineers" can't understand these basics, then what chance do the majority of MS's customer base? Doesn't look good.

Plus the hiring mentality is "oh no, we won't find an F# developer". The problem is that they're looking for "language" developers in the first place. Who the hell cares if a hire knows F#? If they don't but worth hiring, they'll easily learn it. This is true for most languages, but extra true for F# as you still have the CLR, the whole .NET Framework, Visual Studio, etc.

The biggest thing holding F# back apart from that, and apart from people that are well, scared of it, to put it kindly, has been .NET itself. Mono's been flaky for F# development I hear, and people have been suspicious of .NET overall, I feel. Though I do have long-running server apps at high volume working fine with F# on Mono on Linux, ASP.NET and other experiences are suboptimal.

With Microsoft's new stance on open source and shipping .NET everywhere, hopefully a lot more people will give it a spin. F#'s probably in the top spot for the combination of tooling, libraries, and language - so long as you don't mind GC.

As far as the language itself, it does a pretty good job at doing multi-paradigm. In fact, it does OO better than C# in some cases (object expressions).

Re: Introducing F# 4.0

#60

Earlier quoted context omitted.

ASP.NET MVC ?

Does the same sort of thing, but is not nearly as good.

Seems to work just fine for StackOverflow... Then again, maybe 560M pageviews per month on 9 web servers isn't nearly enough for your high-level app requirements. They've stayed with ASP.NET MVC since at least v3 back in 2008. Current [1]:

    - IDE Visual Studio 2012 & 2013
    - Framework Microsoft ASP.NET (version 4.0) on .NET 4.5
    - Web Framework ASP.NET MVC 5 with MiniProfiler
    - View Engine Razor 3
    - Browser Framework jQuery 1.7.1
    - Data Access Layer LINQ to SQL and Dapper
    - Cache / Additional Data redis 2.8.4 via StackExchange.Redis, with serialization via protobuf-net
    - Source Control Git using a self-hosted GitLab instance (previously Mercurial from 2010–2014, Subversion from 2008–2010)
    - Compare Tool Beyond Compare 3
Disqus on the other hand (originally based on python/Django) sounds like they've rewritten a lot of their core components into Go. [3] At the end of the day any solid web framework will still need caching thrown in front of it along with high levels of custom tailoring. Both Disqus and SO have done that. Either way the .NET stack has long since proven itself as a capable foundation.

[1] http://meta.stackexchange.com/a/10370

[2] http://stackexchange.com/performance

[3] http://highscalability.com/blog/2014/5/7/update-on-disqus-it...

Post reply on HN