GithubHelp home page GithubHelp logo

jacquescarette / theoriesanddatastructures Goto Github PK

View Code? Open in Web Editor NEW
38.0 9.0 2.0 13.03 MB

Showing how some simple mathematical theories naturally give rise to some common data-structures

Agda 78.32% Emacs Lisp 6.76% TeX 14.91% Makefile 0.01%

theoriesanddatastructures's Introduction

TheoriesAndDataStructures

Showing how some simple mathematical theories naturally give rise to some common data-structures.

Attempting to answer the following questions:

  • Why do lists pop-up more frequently to the average programmer than, say, their duals: bags?

  • More simply, why do unit and empty types occur so naturally? What about enumerations/sums and records/products?

  • Why is it that dependent sums and products do not pop-up expicitly to the average programmer? They arise naturally all the time as tuples and as classes.

  • How do we get the usual toolbox of functions and helpful combinators for a particular data type? Are they ``built into'' the type?

  • Is it that the average programmer works in the category of classical Sets, with functions and propositional equality? Does this result in some ``free constructions'' not easily made computable since mathematicians usually work in the category of Setoids but tend to quotient to arrive in `Sets` —where quotienting is not computably feasible, in `Sets` at-least; and why is that?

And lots of other stuff.

theoriesanddatastructures's People

Contributors

alhassy avatar jacquescarette avatar wolframkahl avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

theoriesanddatastructures's Issues

Fix formatting

Make sure the paper (like the one in the .tex) file:

  • uses the right format
  • is fully anonymized
  • uses the right fonts

Theories first

I believe (but am quite willing to discuss this) that we should take theories as primary, and structure the paper around theories and their names.

What we should not do then, is structure things around our interpretation of the data-structure underlying the 'free theories' (and their names). Yes, we do need to provide that interpretation, it is a useful result. But the exposition of the ideas need to have an order. And I believe that

  • Theory --> Free Theory --> Interpretation of underlying data-structure

is the right order in which to expose the ideas.

Remove all editorial commentary

Already in the abstract we have a phrase like "With a bit of elementary mathematics," which is completely unhelpful. Adjoints from category theory, and much else besides, does show up here, and these are not 'elementary mathematics'. It doesn't matter if you believe that, the point is to communicate with our audience, who do not agree with that opinion.

The removal of Data.Nat.Properties.Simple in v1.0 of the standard library

Hi, this is a ping that the module Data.Nat.Properties.Simple will be removed in the upcoming release of v1.0 the standard library. The module has been deprecated since v0.14.

If you wish to continue using the latest version of the standard library you will need to update the following files:

Helpers/LeqLemmas.agda
Helpers/FinNatLemmas.agda
Helpers/FinEquivPlusTimes.agda
Structures/Experiments/Sidequest/Permutations/PermutationSequences.lagda
Structures/Experiments/Sidequest/Permutations/Vector.lagda
Structures/Experiments/VectorLemmas.agda
Structures/Experiments/Sidequest.lagda
Structures/Experiments/Sidequest/Permutations/SME.lagda

This can be done by replacing open import Data.Nat.Properties.Simple with open import Data.Nat.Properties.

[Most important issue] The Story.

To have a good paper, either one must have a very compelling result (which usually means solving a problem that someone else posed and whose solution is regarded as important and non-trivial by the community), or be able to tell a 'story' that motivates why the paper is worth reading.

After much work, I came up with

We give a rational reconstruction of some common (and
not-so-common) data-structures that arise in functional
programming. Our categorical approach also leads us to defining
standard functions which ought to be in all reasonable libraries of
data-structures. Being systematic in the exploration of the design
space reveals quite a lot of structure and information about
data-structures and their origins.

as a solid approach to our story. In fact, I then spent quite a bit of time crafting a few paragraphs (see the contents of TandDS.tex) laying out that story for our audience.

And then I read something entirely different in POPL19.org. It talks about Abstract Syntax Trees, serialization, remote execution, compositionality schemes, dynamical systems -- all neat stuff, but also all over the map, with no coherent thread. It has neat "slogans" that are correct -- but belong to a different story altogether.

Then the write-up falls prey to a simple diseases: what-I-learned-last disease. Just because one's most recent 'discovery' is at the top of ones' mind, and seems really cool [especially when it is], does not automatically make it the best thing to start the story with! (I see you, dynamical systems). One needs to carefully think about the audience, and lead them along from knowledge they likely already know towards new knowledge. Papers like T&DS need to be very pedagogical.

Upshot: Either we,

  1. Go with the story I started in TandDS.tex, or
  2. You propose a different story to @WolframKahl and I that you think is better.
    Then when all 3 of us agree on what story to tell, we all write that story, and stick to it.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.