Everything is an expression.
This sentence carries profound meaning. We will invoke it many
times over the course of these articles.
If everything is an expression, then the language shouldn’t have
any problem with me defining two modules in the same source file.
Likewise, it shouldn’t have any problem with me defining a
module inside another module.
Of course, in the context of the Erlang VM, these two snippets
are equivalent; there is nothing preventing you from calling the
in_module module from any other module.
Let’s build a programming language. I call it Xerl: eXtended ERLang.
It’ll be an occasion for us to learn a few things, especially me.
Unlike in Erlang, in this language, everything is an expression.
This means that modules and functions are expression, and indeed that
you can have more than one module per file.
We are just starting, so let’s no go ahead of ourselves here. We’ll
begin with writing the code allowing us to compile an empty module.
Last week I was speaking at the
London Erlang Factory Lite
where I presented a live demonstration of building an FTP server using
As there was no slide, you should use this article as a reference instead.
The goal of this article is to showcase how to use Ranch for writing
a network protocol implementation, how Ranch gets out of the way to let
you write the code that matters, and the common techniques used when
Everyone knows Tic Tac Toe,
Players choose either to be the Xs or the Os, then place their symbol
on a 3x3 board one after another, trying to create a line of 3 of them.
Writing an algorithm to check for victory sounds easy, right? It’s
easily tested, considering there’s only 8 possible winning rows (3 horizontal,
3 vertical and 2 diagonal).
In Erlang though, you probably wouldn’t want an algorithm.