Type Matrix

At present, the type matrix is entirely devoid of implementations, but even the empty grid is pretty interesting.

For example, I suspect that once any data type is working for a given reference type (e.g., Integer is working for Agent), the other data types will mostly Just Work. If so, it may be possible to get entire columns in the matrix working at once.

The Matrix

Clojure supports four reference types (Agent, Atom, Ref, Var), each of which has different operational characteristics. It also has Transient Data Structures (TDS), which are similar to Vars.

Elixir has more than a dozen built-in data types and Clojure has several others that look interesting. Although this could yield dozens of combinations, it doesn't make much sense to tackle them all initially. So, my plan is to tackle a graduated series of milestones.

The first of these handles a simple reference type (Atom) with Puffy Data's native data type (Binary). The second milestone adds the challenge of encoding (and decoding) Integer values. The third milestone fills in the rest of Elixir's scalar data types. Successive milestones will add more data and reference types, filling out the matrix by rows and columns.

Data Type L Agent Atom Ref Var TDS
Array Map C - - - - -
Atom E - 3 - - -
Binary E - 1 - - -
Bitstring E - 3 - - -
Boolean E - 3 - - -
Char List E - - - - -
Dict E - - - - -
Float E - 3 - - -
Hash Map C - - - - -
Hash Set C - - - - -
Integer E - 2 - - -
IO List E - - - - -
List E - - - - -
Map E - - - - -
Seq C - - - - -
Sorted Map C - - - - -
Struct E - - - - -
Tuple E - - - - -
Vector C - 4 - - -

Milestones

  1. Atom / Binary
  2. Atom / Integer
  3. Atom / (Atom, Bitstring, Boolean, Float, ...)
  4. Atom / Vector of (Atom, Boolean, ...)


This wiki page is maintained by Rich Morin, an independent consultant specializing in software design, development, and documentation. Please feel free to email comments, inquiries, suggestions, etc!

Topic revision: r8 - 04 Apr 2016, RichMorin
This site is powered by Foswiki Copyright © by the contributing authors. All material on this wiki is the property of the contributing authors.
Foswiki version v2.1.6, Release Foswiki-2.1.6, Plugin API version 2.4
Ideas, requests, problems regarding CFCL Wiki? Send us email