Difference between revisions of "Diffing"

From apm
Jump to: navigation, search
(Related: added link to yet unwritten page: * Edit calculus)
(major additions)
Line 3: Line 3:
 
This page is about various form of generalized differentiation.
 
This page is about various form of generalized differentiation.
  
 +
Desired things:
 +
* Compact storage of data
 +
* undoability revertability
 +
* mix-and-meshability with older versions
  
 +
= Application cases =
  
== Related ==
+
== 3D modeling - finding points on surfaces ==
 +
 
 +
Usage of: Generalized differentiation (bottom up)
 +
 
 +
Beautiful differentiation: <br>
 +
This is likely useful for [[3D modeling]] [[constructive solid geometry]] <br>
 +
in functional representation (algebraic varieties). <br>
 +
As multidimensional gradients and curvatures are <br>
 +
to be used to find points on surfaces.
 +
 
 +
== Storing content addressed codebases with discovered representation of history ==
 +
 
 +
Usage of: Differentiating datastructures
 +
 
 +
Put the abstract Syntax tree (AST) of code into algebraic datatypes (ADTs)
 +
Put an edit calculus into the same ADT.
 +
 
 +
Try to use insights from differentiating datastructures to <br>
 +
arrive at an elegant minimal incidental complexity solution
 +
 
 +
Question that poses itself: How to represent version history? <br>
 +
As versions can merge and split undo history lists and trees are likely a bad choice. <br>
 +
It's a directed acyclic graph (DAG) structure. <br>
 +
{{todo|Investigate if zippers can be done for DAG datastructures too.}}
 +
 
 +
== Enable collaboration in image-based programming via types and structure editing ==
 +
 
 +
* "Version Control for Structure Editing"
 +
 
 +
{{wikitodo|Elaborate on this.}}
 +
 
 +
 
 +
 
 +
= Kinds of generalized diffing =
 +
 
 +
== Differentiating datastructures ==
 +
 
 +
See: [[Curry-Howard-Lambeck isomorphism]]
 +
With lists and trees as algebrais data types (ADTs)
 +
One can interpret them as algebraic structures and literally differentiate.
 +
These differentiation correspond to so called zipper datastructures usable to represent
 +
diffs on these original ADTs.
 +
 
 +
Eventually an analogy to Taylor series might be found.
 +
 
 +
== Generalized differentiation (top down) ==
 +
 
 +
See 2020 link below. <br>
 +
Needs investigating.
 +
 
 +
== Generalized differentiation (bottom up) ==
 +
 
 +
See: [[Beautiful differentiation (Conal Elliott)]] <br>
 +
 
 +
== Edit calculus ==
 +
 
 +
A formal calculus to make edits on a formal languages abstract syntax tree (AST). <br>
 +
This is invented rather than discovered. <br>
 +
So maybe one can glean a bit from the other cases to arrive at an elegant solution.
 +
 
 +
=== Schema diffing – Version Control for Structure Editing ===
 +
 
 +
{{wikitodo|Elaborate on this.}}
 +
 
 +
= Related =
  
 
* [[Data decompression chain]]
 
* [[Data decompression chain]]

Revision as of 12:15, 1 January 2023

This article is a stub. It needs to be expanded.

This page is about various form of generalized differentiation.

Desired things:

  • Compact storage of data
  • undoability revertability
  • mix-and-meshability with older versions

Application cases

3D modeling - finding points on surfaces

Usage of: Generalized differentiation (bottom up)

Beautiful differentiation:
This is likely useful for 3D modeling constructive solid geometry
in functional representation (algebraic varieties).
As multidimensional gradients and curvatures are
to be used to find points on surfaces.

Storing content addressed codebases with discovered representation of history

Usage of: Differentiating datastructures

Put the abstract Syntax tree (AST) of code into algebraic datatypes (ADTs) Put an edit calculus into the same ADT.

Try to use insights from differentiating datastructures to
arrive at an elegant minimal incidental complexity solution

Question that poses itself: How to represent version history?
As versions can merge and split undo history lists and trees are likely a bad choice.
It's a directed acyclic graph (DAG) structure.
(TODO: Investigate if zippers can be done for DAG datastructures too.)

Enable collaboration in image-based programming via types and structure editing

  • "Version Control for Structure Editing"

(wiki-TODO: Elaborate on this.)


Kinds of generalized diffing

Differentiating datastructures

See: Curry-Howard-Lambeck isomorphism With lists and trees as algebrais data types (ADTs) One can interpret them as algebraic structures and literally differentiate. These differentiation correspond to so called zipper datastructures usable to represent diffs on these original ADTs.

Eventually an analogy to Taylor series might be found.

Generalized differentiation (top down)

See 2020 link below.
Needs investigating.

Generalized differentiation (bottom up)

See: Beautiful differentiation (Conal Elliott)

Edit calculus

A formal calculus to make edits on a formal languages abstract syntax tree (AST).
This is invented rather than discovered.
So maybe one can glean a bit from the other cases to arrive at an elegant solution.

Schema diffing – Version Control for Structure Editing

(wiki-TODO: Elaborate on this.)

Related

External links