Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Worlds #65

Closed
9 tasks done
rolyp opened this issue Feb 5, 2019 · 0 comments
Closed
9 tasks done

Worlds #65

rolyp opened this issue Feb 5, 2019 · 0 comments

Comments

@rolyp
Copy link
Collaborator

rolyp commented Feb 5, 2019

Allow a single computation to be executed with two different (but related) demands.

To allow two different computations to be executed (with corresponding demands) and compared, we will need to parameterise evaluation on a "world" (or "version"); currently this is global:

  • interned objects are similar to rigid designators; they denote the same thing (have the same content) in every possible world
  • versioned objects may take on different values in different worlds

If we had this notion then we could probably use it to execute a single computation with two different demands.

  • switch versioned objects to a "constructor"-style factory method at and make calling version part of at
  • experiment with global revision/world
    • give versioned objects a partial map from worlds to states
    • updating at a world should enforce LVar semantics (i.e. fail if not increasing)
    • updating when the most recent state was set in a strictly prior world should create a new entry in the partial map
    • ...with copy on write semantics
    • worlds are partially ordered
    • better names for __version, __mergeAssign, __merge
    • null assignment should remain a no-op at the same world, but mutate at a new world
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: Done
Development

No branches or pull requests

1 participant