Skip to main content


A Fractl model is represented using an extensible data notation with some extensions as supported by the Clojure programming language.

  • Fractl source code should be encoded using UTF-8.
  • Tokens are separated by whitespace and by the delimiters - { } ( ) [ ].
  • The characters # and ' are reserved for special purposes as described later in this document.

A Fractl program consists of declarations and data-patterns.


A declaration has the following general syntax:

(reserved-word identifier specification)

Reserved-word must be one of component, entity, relationship, event, record, attribute or dataflow.

Identifier is a keyword that uniquely identifies the new declaration within the model. An identifier must start with an alphabet and can consist of alpha-numeric characters. The characters . and / can be used in an identifier, but they serve a specialized purpose. Some identifiers automatically generated by the Fractl compiler may also contain the _ character, but this is not allowed to be used in user-defined identifiers.

The optional specification will be a series of data-patterns made up of map and vector literals.

  1. Component
  2. Data Model
    1. Record
    2. Attribute
    3. Entity
    4. Relationship
  3. Business Logic
    1. Event
    2. Dataflow