Monday, June 30, 2014

negative and fractional types

I'm entranced by http://www.cs.indiana.edu/~sabry/papers/rational.pdf: "The Two Dualities of Computation: Negative and Fractional Types" by James and Sabry from Indiana Uni. Amazing. Not that I really understand the implications.

Note that it is about a reversible language which can't be a full Turing complete language. But the reversible parts of a language are very important. They arose naturally in the design of Wombat where inverse pairs are important in a number of places. An explicit procedure takes the input and generates an output by unification. A single explicit procedure can generate an inverse/adjoint pair of procedures if the input ($) and output (`$) can be interchanged and produce a valid inverse procedure.

So I would love to understand the paper better and build it into Wombat, making the reversible part of the language a more important core part. Mercury is a language which puts special emphasis on the reversible bits. I should learn more about it.

There is a fascinating similarity to quantum mechanics, which is a core and reversible part of physics. And of course, the next level up in physics, where time only goes forward and entropy increases, then seems to have some similarity to a complete programming language. Hmm...

Tuesday, June 3, 2014

Swift and Mercury

Some of the things in Swift look a bit like wombat. Types acting as namespaces, at least for enumerations. Also we see "." as a prefix which gives the appearance of wombat atoms. Of course Swift is much more ad hoc than wombat.

It is nice to see the Mercury language getting more activity. It was an inspiration for the invertible functions in wombat, and I am sure there is more improvement to be made in that aspect of wombat.