Posts in the “programming” category

Erlang has single-assignment variables

“Erlang has single-assignment variables. As the name suggests, they can be given a value only once. If you try to change the value of a variable once it has been set, you’ll get an error.”

(“Single-assignment variables” are the same as val fields in Scala. Using them can make your code more like algebra.)

Set theory explained with southern colloquialisms

A visual image of the mathematical concept of “sets” using southern colloquialisms.

(I found this image on Twitter, but since I didn’t “like” it at the time I can’t find who created it, but I’ll link to them if/when I ever find the page again.)

Take time to think(!)

As a note to my future self: Take time to think!

*sigh*

Even at my advanced age, if I don’t think through an algorithm I can still waste an awful lot of time.

As an example I just started working on a complex algorithm for my Android football game based on the initial thoughts in my brain, and came to regret it. After recovering from that faux-pas I decided to write just a few simple notes like this to clarify my thoughts:

Lisp: What is an S-expression?

I spent some time last night reading the book, Practical Common Lisp. In all Lisp books you’ll read about S-expressions, but very few authors explain what they are. This image comes from this Wikipedia page, which states, “In computing, s-expressions (for “symbolic expression”) are a notation for nested list (tree-structured) data, invented for and popularized by the programming language Lisp, which uses them for source code as well as data. In the usual parenthesized syntax of Lisp, an s-expression is classically defined as a) an atom, or b) an expression of the form (x . y) where x and y are s-expressions.” See that link for more information about Lisp and S-expressions.

The history of Lisp

I’ve been interested in the Lisp programming language since I first learned about it, but in the books I’ve read about it, no author has explained the background of terms like cons, car, cdr, and S-expressions. Tonight I found this “History of Lisp” document, which explains the meaning of some of those names.

(If you’re really interested in those terms, this Wikipedia page describes them even more.)