Of course, in most “OO” languages, everything is *not* an object (e.g. methods and primitives in some languages), and in Haskell everything is not a value (modules and type class instances). But, close enough

Relative time futures seem really weird to me. It seems that they cannot be used as an interface to the real world, because the real world would behave differently depending on what time you observe it. You end up having to abandon caching (implementors everywhere cry tears of joy), and then you end up with some IO-action-like thing with no real semantics at all, because the value is different every time you use it.

Maybe all this just means the “foreign interface” still makes more sense with absolute time semantics, and at runtime you just start your relative-time program at some point on the real-world timeline.

Is this an area of relative time FRP you have thought much about?

]]>I think that you may find some interesting reading on a similar vein and with some curious twists in the book “Probability Theory, The Logic of Science” by E T Jaynes, specifically chapter 2. This derives the quantitative rules of probability theory from the ‘basic desiderata’ of ‘plausible reasoning’. What I find interesting is firstly another fine example of the approach you have applied here and from what I surmise quite widely elsewhere; the approach is the same and the particular steps are also similar although as the problem is more general the equations involved are more general functional equations, one being ‘The Associativity Equation’. But it is also interesting that the author took this approach, with some inspiration from G Polya, around 65 years ago and while active in applying computation to probability and statistics was certainly not of a theoretical computer science orientation.

]]>In a category with an initial object, AFAIK it’s standard to encode constants as morphisms from the initial object.

Sorry, of course I meant terminal object (1 or Unit).

]]>