Skip to content
Brian Marco edited this page Nov 27, 2018 · 1 revision

Idea

What if each of us could name things in the way that makes sense to us, but still communicate on a global scale.

Ramblings

  • If we can create a less expressive language between edn and full on clojure we can create a smoother transition from data to code which will be easier to port between languages. If we want simple rather than complex we need to use the language that has the right level of expressivity for the task at hand instead of only choosing between pre-parsed data and full turing completeness. Pure functions are a good example here, but we want to get a similar effect to monads without their rigidness (probably leveraging spec in some way)
  • Namespaced edn using relative keywords could map into a complete graph based filesystem which could map directly to datoms

Names as paths

Namespaced keywords/symbols can be thought of as paths

:example.com/word => com -> example -> word

As can basic uri's

example.com/ns/word => com -> example -> ns -> word

Graph based namespaces

Instead of creating a single Directed Acyclic Graph (DAG) create a complete naming graph. It is then straightforward to resolve two sources using relative naming schemes by choosing an objective naming node. This can allow different groups and individuals and contexts to use different naming schemas, but still refer to the same objects

graph based file system

There is no root node '/' only relative naming. So a user would have a link to './system' or './linux' or './$' or whatever and that would be how they access the root directory. Every folder in the './system' would have a link './~'. Then two systems could be put together using whichever alias schema makes since and the entire graph of connections would be explicit. You could use such a filesystem to navigate a database and also link two databases with automatic renaming