Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I would suggest neither in your position. I suggest trying a language like F#. F# started as with the idea of developing a language with OCaml like syntax and semantics for the .NET platform. Since then its evolved to being a mature, elegant and robust language. It can run on Windows and Linux.

Advantages over OCaml is I suspect a much larger footprint and the ability to tap into all of .NET (huge ecosystem). Plus your skills will be more portable than Haskell or OCaml.

Both Haskell and OCaml are exceptional languages but the ecosystem and market footprint is not great for either. Jane Street has done a lot to evangelize OCaml but it hasn't really moved the needle. Haskell is probably the most different being a lazy functional language. Definitely learn it but using it in real life will be harder.



> Advantages over OCaml is I suspect a much larger footprint and the ability to tap into all of .NET (huge ecosystem). Plus your skills will be more portable than Haskell or OCaml.

Although job prospects are not the primary factor, I would like to hear more about this. Is F# widely-used? Are there a bunch of F# jobs and not quite enough people to fill them?

Thanks

edit: also, if you can recommend any physical books on F#, I would appreciate it


If you're not so much interested in using the language you learn in a job, I would recommend learning a proof assistant like Coq (basically Ocaml on steroids) or Lean (newer toy originally by Microsoft). The functional programming is fully there and you can even formally prove things about your program. The type systems these languages use are the richest out there (enough to encode basically any mathematical statement as a type)


I've heard of those, but I don't think I quite know what they are for. Formally proving things about a program sounds cool, but what are some practical applications of that?

Thanks


For example, making "exhaustive tests" (as if you're able to check every single possible user input), eliminating a lot of security vulnerabilities, provably correct implementations of cryptographic algorithms (DJB is playing with Lean a lot right now and wrote a paper on what it's like), being able to reason better about the program, composing different programs while maintaining these advantages.

The "reason" why people ask "what's the use of that" is that they just assume that writing bug-free and correct software is impossible and not worth trying.


Oh cool




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: