Overview of Fan’s architecture

Fan’s philosophy

Unlike traditional programming languages, Fan is a set of languages which can evolve itself incrementally. It gets started from the vanilla OCaml language as Fan0, with more and more new languages added for each version.

For example, to add a new DSL into Fann, we would supply a front-end and a back-end targeted at Fann, upon being integrated, Fann becomes Fann+1.

We can grow Fan endlessly in such a way, however, the main interesting part for Fan is not that me, the main developer of Fan can keep adding features to it, its interesting point lies in the following two aspects:

  1. It encourages the programmer to think about programming in a bottom-up way. Unlike the traditional problem-oriented approach, language-oriented programming is encouraged: delimited domain specific language([[file:ddsl.org][DDSL]]) is the best abstraction for a specific domain.
  2. Everyone, including you: the reader, can join and develop a mini-compiler and share with other people. Fan servers as a platform to glue them tegether.