search


Datom: An atom of data
Sun Jul 11 00:00:00 UTC 2021

Every software system I've ever worked with reduces to the transformation of data . This begs the question what is the simpliest form of data from which all other complex data is built? In other words, what is the data equivilent of the Atomic Theory of matter?

If there is such a thing, it would look similar to what the w3c defines in the semantic web. The data atom (datom) is an RDF tuple. A tuple is a simple data structure that can be implemented in any language as an array or a list yet from such simplicity all other data can be expressed. The humble tuple can be a foundation for building universal data representation.

Unification of Data

It is better to have 100 functions operate on one data structure than 10 functions on 10 data structures. -Alan Perlis

The graph is a generic data structure that can represent any type of data. Clojure data structures (list, maps, set, vectorss) are all implemented as trees which is a special case of a graph. Game engines represents scene as a graph. The humble tuple can be a foundation to build graphs for anything from immutable data structures, to databases, to game engines. A set of domain independent functions can be used to manipulate databases or game engines to realize the quote by Alan Perlis.

Clojure, with its built-in immutable data structures using trees and a large set of functions to manipulate a small set of datastrucutres, embodies this philosophy. However, it doesn't go far enough. Clojure itself should be built using only primitives for manipulating tuples and graph data. This philosophy should start from the programming language and extend into the entire application stack (databases, distributed computing, visualization). High level domain specific APIs should be built on nothing more than a complete set of data structure transformation API. These data structure transformation API are the axioms of the system and applications are the theorems. A user can use high level theorems or rely directly on the low-level axioms to accomplish a task. Nothing is hidden. The Matrix should be transparent to anyone.