Thu Jul 16 09:07:13 CEST 2009

Bijective functions

I've seen invertable functions before in PLT: in the web server:

  (struct stuffer (in out))
    in : (any/c . -> . any/c)
    out : (any/c . -> . any/c)

  A stuffer is essentially an invertible function captured in this
  structure. The following should hold:

    (out (in x)) = x
    (in (out x)) = x

Then it defines a composition operation for these.  Another thing to
think about is constraint based programming from SICP[2], and in the
Guy Steele thesis[3][5].  See also thread on LtU[4].

The CP approach in a nutshell:

  - define primitive constraints as a collection of directed

  - define constraint composition (network)

  - find a way to transform an undirected constraint network into a
    directed data flow graph

So it looks like the current dataflow graph code in Staapl could be
re-used for representing the more general constraint problem.

What would be the primitive constraints for a decoder?  Essentially,
how can it be factored?

[1] http://docs.plt-scheme.org/web-server/stateless.html
[2] http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-22.html#%_sec_3.3.5
[3] http://www.ai.mit.edu/publications/pubsDB/pubs.doit?search=AITR-595
[4] http://lambda-the-ultimate.org/classic/message4990.html
[5] md5://4226c96cd6ac34fd4eea1c38de1ecad4