I'm a armchair programming-language theorist, and I know … quite a few programming languages, some to extensive depths. (Hell, I've built more than my fair share.)

Most of the information I've found for learning Mathematica seems to focus (rightfully-so) on non-programming (or beginner-level programming) mathematicians, or is reference-style (assuming you already know the basics.)

I'm sure I can puzzle this out from trial-and-error (I've already got something of an intuition for what I'm going to find, thanks to seeing the phrase ‘a Lisp with some cool pattern-matching’), but I'm curious what the best resources out there are for thoroughly learning the Wolfram language (evaluation model, inspirations, etceteras.)

  • 8
    $\begingroup$ Leonid's book -- Mathematica® programming: an advanced introduction $\endgroup$ – Sektor Mar 21 '16 at 11:58
  • 2
    $\begingroup$ You could also take a look at Wolfram's tutorial Fast introduction for programmers for a short alternative perspective aimed at a Mathematica beginner that has other programming experience. $\endgroup$ – MarcoB Mar 21 '16 at 12:27
  • 7
    $\begingroup$ The early books, published between 1990-1996 are probably the best ones for you, Power Programming with Mathematica by David Wagner or those by Roman Maeder. You will find that they are more about the language and less about applications in mathematics etc. The book by Wagner, which is available for free on the page linked to above, discusses evaluation rather thoroughly and it includes details that only a developer of the Mathematica kernel could have known. It also specifically talks about similarities between Lisp and Mathematica. $\endgroup$ – C. E. Mar 21 '16 at 15:27
  • $\begingroup$ @C.E. that looks like precisely the sort of thing I was looking for. Post this as an actual answer, so I can accept it? (= $\endgroup$ – ELLIOTTCABLE Mar 22 '16 at 10:13
  • 1
    $\begingroup$ The book by Wagner is good for this. Also, if you know Lisp well, it's probably better not to think of mma as Lisp with pattern matching. It feels very different to write mma because the evaluation is done very differently. Or at least, it feels so to me; I only know Lisp superficially. $\endgroup$ – acl Mar 22 '16 at 11:55