add links to rosetta2, rosetta3
[lambda.git] / learning_ocaml.mdwn
1 *   [Try OCaml in your browser](http://try.ocamlpro.com/) (slow, bare-bones)
2 *   This site's guide to [[Installing OCaml|/installing#ocaml]]
3 *   This site's [[entry-level explanation of the differences between Scheme, OCaml, and Haskell|rosetta1]]
4 *   More detailed comparisons of OCaml and Haskell [[here|/rosetta2]]; and then more details about how to do some OCaml-ish and Haskell-ish things in Scheme, and how to get Scheme-ish continuations in OCaml, [[here|/rosetta3]]
5
6
7
8 <!-- -->
9 *   **[A brief introduction to OCaml](http://www.cs.jhu.edu/~scott/pl/lectures/caml-intro.html)**
10 *   [What is OCaml?](http://ocaml.org/learn/description.html) <!-- includes [About OCaml](http://caml.inria.fr/about/index.en.html) and [An Overview of the Caml Language and Tools](http://caml.inria.fr/about/overview.en.html) -->
11 *   [Code Examples](http://ocaml.org/learn/taste.html) <!-- includes [A Hundred Lines of OCaml](http://caml.inria.fr/about/taste.en.html) -->
12 *   [Cheat Sheets](http://ocaml.org/docs/cheat_sheets.html)
13 *   [Caml Quick Reference Guide](http://caml.inria.fr/pub/old_caml_site/FAQ/qrg-eng.html)
14 *   [A Concise Introduction to Objective Caml](http://www.csc.villanova.edu/~dmatusze/resources/ocaml/ocaml.html), 22 pp. from 2000, a few details may have changed <!-- by David Matuszek, OCaml Wiki's Tutorial page links to this: "gives a concise, yet broad, overview of the language and the standard library; it is rather old but most of what it says remains valid" -->
15 *   [OCaml Tutorial by Example](http://xahlee.org/ocaml/ocaml_basics.html), Xah Lee from 2009
16 *   Wikipedia on
17 [ML](http://en.wikipedia.org/wiki/ML_%28programming_language%29),
18 [Caml](http://en.wikipedia.org/wiki/Caml), and
19 [OCaml](http://en.wikipedia.org/wiki/OCaml)
20
21
22 <!-- -->
23 *   [OCaml Wiki](http://ocaml.org/)
24 *   [INRIA](http://caml.inria.fr/)
25
26
27 ## Tutorials ##
28 *   The [start of the OCaml Manual](http://caml.inria.fr/pub/docs/manual-ocaml/coreexamples.html) has a tutorial
29 *   [More Tutorials](http://ocaml.org/learn/tutorials/) <!-- seems to include <http://mirror.ocamlcore.org/ocaml-tutorial.org/>, last updated 2009 -->
30 *   First 3 chapters of *OCaml from the Very Beginning*:
31 [1](http://ocaml-book.com/s/11-17Chapter1.pdf)
32 [2](http://ocaml-book.com/s/19-25Chapter2.pdf)
33 [3](http://ocaml-book.com/s/29-33Chapter3.pdf)
34 *   Chapter [1](http://www.ffconsultancy.com/products/ocaml_for_scientists/chapter1.html) of *OCaml for Scientists*
35 *   Chapter [1](http://www.southampton.ac.uk/~fangohr/software/ocamltutorial/lecture1.html) of *OCaml for Scientific Computation* <!-- OCaml Wiki's Tutorial page links to whole text -->
36 *   [Introduction to Objective Caml](http://files.metaprl.org/doc/ocaml-book.pdf)
37 (284 pp. text from 2008, based on Jason Hickey's course at CalTech) <!-- also at http://www.cs.caltech.edu/courses/cs134/cs134b/book.pdf -->
38 *   [Think OCaml](http://greenteapress.com/thinkocaml/thinkocaml.pdf) (142 pp. pdf)
39 *   [Real World OCaml](https://realworldocaml.org/v1/en/html/index.html) (510 pp. text from 2013)
40     *   recommend reading [Chapters 1-4](https://realworldocaml.org/v1/en/html/a-guided-tour.html) when getting started (Chapter 4 is a bit more advanced)
41     *   then [Chapter 6](https://realworldocaml.org/v1/en/html/variants.html) when learning types
42     *   then [Chapter 8](https://realworldocaml.org/v1/en/html/imperative-programming-1.html) when learning about mutation (OCaml has what we call *explicit* mutation)
43
44 ### Other ###
45
46 *   [Introduction to OCaml for Haskellers](http://foswiki.cs.uu.nl/foswiki/pub/Stc/BeyondFunctionalProgrammingInHaskell:AnIntroductionToOCaml/ocaml.pdf), [another](http://blog.ezyang.com/2010/10/ocaml-for-haskellers/)
47 *   Haskell Wiki on [OCaml](https://wiki.haskell.org/OCaml)
48 *   [ML Dialects and Haskell](http://hyperpolyglot.org/ml)
49 *   [Differences between Haskell and SML?](http://www.quora.com/What-are-the-key-differences-between-Haskell-and-Standard-ML?browse)
50 *   [Comparing SML to OCaml](http://www.mpi-sws.org/~rossberg/sml-vs-ocaml.html)
51 *   [A C++/Java programmer's introduction to Objective Caml](http://caml.inria.fr/pub/old_caml_site/FAQ/stephan.html)
52
53
54 ## Advanced Docs, listed here for reference ##
55 *   [User's manual](http://caml.inria.fr/pub/docs/manual-ocaml/index.html), including [standard library](http://caml.inria.fr/pub/docs/manual-ocaml/libref/index.html)
56 *   [Latest release](http://ocaml.org/releases/latest/) <!-- also http://caml.inria.fr/ocaml/release.en.html -->
57 *   OPAM package manager:
58 [usage](https://opam.ocaml.org/doc/Usage.html) |
59 [repository](https://opam.ocaml.org/packages/) |
60 [issues](https://github.com/OCaml/opam-repository/issues)
61 *   [Style guidelines](http://caml.inria.fr/resources/doc/guides/guidelines.en.html)
62 *   [FAQ](http://ocaml.org/learn/faq.html)
63
64 <!-- -->
65 *   [Debugging](http://caml.inria.fr/resources/doc/guides/debug.en.html)
66 *   [Tips for using the OCaml toplevel](http://mirror.ocamlcore.org/wiki.cocan.org/tips_for_using_the_ocaml_toplevel.html)
67 *   [Making code run fast](http://mirror.ocamlcore.org/caml.inria.fr/pub/old_caml_site/ocaml/speed.html)
68 *   [How to pretty-print?](http://caml.inria.fr/pub/old_caml_site/FAQ/format-eng.html)
69 *   OCaml-Tutorial [Glossary](http://mirror.ocamlcore.org/ocaml-tutorial.org/glossary.html)
70 *   [Reddit's r/ocaml](https://www.reddit.com/r/ocaml)
71 *   [Stack Overflow](https://stackoverflow.com/questions/tagged/ocaml?sort=faq) questions tagged "ocaml"