Currently, every task is calculated, its result stored, and inserted when other tasks are evaluated. I am observing a tendency towards a library of very basic tasks, which results are easy or no computations. We might not store the results of such tasks, but (re-)execute them only on insertion. The obvious first candidate is Id(result).

As an interface, I have something like is-transient similar to is-combinator in mind, which allows for easy experiments by switching transient behaviour on and off for particular tasks.

Submitted by Guido Wachsmuth on 13 July 2013 at 01:23

On 13 July 2013 at 01:23 Guido Wachsmuth tagged rfc

On 13 July 2013 at 01:24 Guido Wachsmuth tagged !guwac

On 13 July 2013 at 01:24 Guido Wachsmuth tagged @gohla

On 13 July 2013 at 01:36 Gabriël Konat commented:

I agree this would be nice to have. Currently there is some overhead when performing a task however, because the perform-task is polymorphic on the instruction constructor. Every time an instruction is performed it has to ‘try’ all the perform-task strategies which is linear in the worst case. Having transient results will make this a little bit worse. We can make it constant by using YAHM (Yet Another Hash Map) from constructor (name + arity) to perform strategy, but I guess this is a separate issue.


On 13 July 2013 at 01:41 Guido Wachsmuth commented:

Just to be clear on that: It is really just something nice to have, but not urgent.


On 13 July 2013 at 02:10 Gabriël Konat commented:

Yeah, let’s tag those things with minor.


On 13 July 2013 at 02:10 Gabriël Konat tagged minor

Log in to post comments