January 2020
Intermediate to advanced
532 pages
13h 31m
English
The characteristics of a DSL are that the source code should look like the original representation of the domain concept. In this case, the domain concept is described by an axiom and a set of rules. Using the algae growth example, it needs to look like the following:
Axiom: A Rule: A -> AB Rule: B -> A
If we try to write them in plain Julia language, we may end up with code like this:
model = LModel("A")add_rule!(model, "A", "AB")add_rule!(model, "B", "A")
As we can see, this is not ideal. While the code is neither long nor difficult to read, it does not look as clean as the L-System grammar. What we really want is to build a DSL that lets us specify the model as follows:
model = @lsys begin axiom : A rule : A ...
Read now
Unlock full access