3 ms·
I apologize for going off topic here by saying go for language number 4. but hear me out. I have been struggling with my business vs pleasure languages for som
by kungito 9y ago
I apologize for going off topic here by saying go for language number 4. but hear me out.
I have been struggling with my business vs pleasure languages for some time now. I work 95% in C# but whenever I find willpower to do some hobby coding I go for Haskell.
Every time I go for a new hobby project after not coding in Haskell for a while I have to go through the hurdles of remembering how to set things up, downgrading from Visual Studio to Visual Studio Code with some broken Haskell language extension and last time before I started coding my new hobby project I asked myself: What would it take for me to make C# as lovable as Haskell.
I came up with these things which annoy me most (I know everyone has their own list):
1. Lack of higher order types
2. Lack of syntactic sugar for partial function application et al.
3. Lack of GADTs
4. Still waiting for those nullable reference types.
On the other hand I would get:
1. Great language server with support for refactorings, formatting etc.
2. Test tooling and frameworks and performance analysis tooling and frameworks.
3. Way bigger ecosystem of open source libraries.
While I see a reason to go for either C# or Haskell, I really don't think it's worth going for Python or Go instead in most cases. I just need a better type system than what Go has to offer (and Python doesn't do any type checks without 3rd party support). Hell, I'd go for TypeScript or PureScript before these 2.
C# has grown a lot in the past few years. With C# 7 you have all those fancy things like local functions, pattern matching, deconstruction, async improvements etc.
You have a stable language and ecosystem, open source compiler and language server (Rosyln), free editor support if you want to save (Visual Studio Code) or if you want enterprise tooling you can go up to Visual Studio Enterprise. With .Net Core going into 2.0 the coverage of .Net is really broad, and Entity Framework and Asp.Net are being rewritten from scratch for all platforms.
It's easy to do foreign language interfacing if you want to use some highly performant lib like LAPAC or something and someone usually already wrapped around it.
Btw, if not Haskell, check out PureScript
- LeanderK 9y agoI think haskell is rapidly improving in this area. It suffered from every editor having it's own home-grown backend. Haskell IDE-Engine [1] is becoming quite stable in my experience (using it myself) and while providing all the basic features, it's based on the Language-Server-Protocol and thus has various plugins for your favourite Editor (vscode, vim, atom, sublime etc. I personally use vscode). The development is also quite active and not run by one person anymore. I am quite pleased to be honest. [1] https://github.com/haskell/haskell-ide-engine https://github.com/haskell/haskell-ide-engine
- sevensor 9y agoHave you considered F#? It doesn't enforce purity, but you get a lot of good stuff from the type system that you don't get in C#. Plus you get everything .NET gives you.