created mirror

This commit is contained in:
whatever
2026-09-14 20:19:29 -04:00
commit 6764738d92
600 changed files with 87187 additions and 0 deletions

View File

@@ -0,0 +1,53 @@
% BE SURE TO EDIT design.ptex
\documentclass{article}
\usepackage{rcs}
\RCS $Date: 2000/03/04 15:45:59 $
\RCS $Revision: 1.1 $
\date{Rev.\RCSRevision~~\RCSDate}
\title{Dimension-based thinking for ZigZag}
\author{Tuomas J. Lukka}
\begin{document}
\maketitle
\def\zz{ZigZag}
\section{Introduction}
When designing the code to implement a \zz\ space, the
place most people would start at would be the cell object, which would
have a set of pointers to other cells, named with dimension names.
However, this is not the only way to structure the internals - indeed,
it is not necessarily a good way at all.
\section{Dimension-based view}
With cells, you have to always take steps to enforce the two-directional
connection consistency rule.
The dimension-based view starts from the realization that if we consider
each {\em dimension} an entity by itself, this gets much simpler:
simply put, each dimension is a one-to-one mapping from some cells of the
space to some other cells.
\section{Advantages}
The dimension-based view has several advantages:
\begin{itemize}
\item {\bf Specialization}
It is much easier to define a single dimension object to
do something different than the others, e.g. a dimension where
getting the {\it n}th cell is fast but inserting and deleting cells
is allowed to be slow.
\item {\bf Simplicity}
Since one object is in charge of the both ends of a connection,
it is easier to avoid mistakes. Coding transient cell connections
is easy as well, as that object can keep tabs on the transient
connections separate from the stable ones.
% .PS
% box "Clang" ht 0.25
% .PE
% $$\box\graph$$