An overview of OCaml
simongrondin.name
simongrondin.name
It's something I've been working on for quite a while, because I wanted to answer the question "Why do you like OCaml so much and why should I care?" once and for all. Hope you enjoy it.
Speaking of OCaml, all the traffic going to my blog is going through HARchiver [0], a very high performance proxy and reverse-proxy 100% written in OCaml that gathers datapoints for use with Mashape Analytics [1]. Disclaimer, I work at Mashape.
[1] http://ocaml.org/community/planet/
[2] https://github.com/ocaml/ocaml.org/commit/8df5da9b6fe1ba4c43...
While at it, let me add some more comments to the article, since the OP was asking for input:
> In Java and JavaScript, any object can be null and it leads to Null Pointer Exceptions at runtime.
I know what is meant, but that is really strangely written, since the only object that can be null is null itself. In JS to pick your example, {} can never be null.
> There are two different forms: SUM types and PRODUCT types
This comes after introducing tuples which are also product types, they even have multiplication signs in their type signature :-)
> SUM types in OCaml are called Variants.
You could note that enums are sort-of-kind-of sum types in C.
Also, you should probably emphasize that your examples use Core which is not the standard library, because the standard library has completely different signatures, has no Option module, etc. You should probably add the relevant open line, otherwise it is confusing for people that some of the examples don't work and produce complicated error messages.
This is true, but null is effectively at the bottom of the inheritance hierarchy in that it is a valid value for any (pointer) type (in C/C++/Java etc.), while unit cannot be used that way. The relationship between unit and void is that if you were porting a program from an imperative language with void to OCaml, you would generally replace any place where you returned void or took no arguments/void as the argument with unit. Like void it conveys no real information.
I think I'd compare them more to tagged unions.
I highly recommend it.
gnuplot.info has address 216.34.181.96
gnuplot.info has IPv6 address 2001:468:c80:a202:0:b074:0:c082
96.181.34.216.in-addr.arpa. 3567 IN PTR projects.sourceforge.net.
This site has a different IP and seems to point to a DNS server/proxy: simongrondin.name has address 176.58.120.112
112.120.58.176.in-addr.arpa. 85642 IN PTR unblock.us.org.
Edit: .name site works now