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

Semantics and Types for Objects with First-Class Member Names (FOOL '12) #26

Open
brianhempel opened this issue Mar 8, 2017 · 0 comments
Labels

Comments

@brianhempel
Copy link
Contributor

brianhempel commented Mar 8, 2017

Joe Gibbs Politz, Arjun Guha, Shriram Krishnamurthi (FOOL '12)

Objects in many programming languages are indexed by first-class strings, not just first-order names. We define λSob (“lambda sob”), an object calculus for such languages, and prove its untyped soundness using Coq. We then develop a type system for λSob that is built around string pattern types, which describe (possibly infinite) collections of members. We define subtyping over such types, extend them to handle inheritance, and discuss the relationship between the two. We enrich the type system to recognize tests for whether members are present, and briefly discuss exposed inheritance chains. The resulting language permits the ascription of meaningful types to programs that exploit first-class member names for object-relational mapping, sandboxing, dictionaries, etc. We prove that well-typed programs never signal member-not-found errors, even when they use reflection and first-class member names. We briefly discuss the implementation of these types in a prototype type-checker.

https://cs.brown.edu/~sk/Publications/Papers/Published/pgk-sem-type-fc-member-name/paper.pdf

@brianhempel brianhempel changed the title Semantics and Types for Objects with First-Class Member Names Semantics and Types for Objects with First-Class Member Names (FOOL '12) Mar 8, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant