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

Reimplement deep patterns using tries #6

Closed
19 tasks done
rolyp opened this issue Feb 17, 2018 · 0 comments
Closed
19 tasks done

Reimplement deep patterns using tries #6

rolyp opened this issue Feb 17, 2018 · 0 comments

Comments

@rolyp
Copy link
Collaborator

rolyp commented Feb 17, 2018

As per my "demand-indexed computation" experiment. Imported from rolyp/lambdacalc-old#4.

  • Trie datatype, analogous to Constr:
    • Trie.Var maps any argument to a continuation, plus environment binding the variable
    • Trie.Prim (?) that demands a strict value of primitive type
  • primitive operations
    • PrimOp should be an expression form?
    • prim ops as tries of ground type
    • delete Expr.OpName (consolidate with Expr.Var)
  • Trie.Constr case via nested tries**
  • new function application semantics, based on tries
  • new match..as semantics, based on tries
  • semantics on paper for demand-indexed self-explaining computation
  • adapt above to work with environments rather than substitutions
  • write-up:
    • minor corrections to self-explaining, demand-indexed
    • arbitrary ground types rather than just nat; unary primitives
    • drop de Bruijn indices in favour of explicit names
    • environment-based demand-indexed evaluation
    • compute output environment as part of the judgement?
    • define self-explaining as a function over a demand-indexed proof tree
    • delete self-explaining experiment? (its patterns won't be as nice as tries)
    • τ, υ to range over tries (υ for arbitrary tries, τ for non-empty ones)?
    • ρ, σ to range over environments?
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