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

Meta level data #76

Merged
merged 24 commits into from
Nov 16, 2015
Merged

Meta level data #76

merged 24 commits into from
Nov 16, 2015

Conversation

SkySkimmer
Copy link
Collaborator

This pull request introduces:

  • a new variant of values, called tags, consisting of a quoted identifier (eg 'foo) applied to a list of arbitrary values. For instance:

    'closure_with_judgement (fun x -> x) Type
    
  • a match statement

    match v with
      | [pattvars] pattern => comp
      ...
      end
    

    where pattvars is a list of variables to be instantiated by values on a match.
    The patterns are not linear. Terms are compared modulo alpha equality, and term judgements are compared through the terms only.
    If the name of a binder is a pattern variable (eg x in λ [x] foo), that variable will be instantiated with the corresponding atom.
    The value matching a sub-pattern can be used to instantiate a variable with the as keyword, eg

     | [x y] 'cons _ (('cons x _) as y)
    

    will match list-like tag values with at least 2 elements, instantiating x with the second element and y with the tail.

See upcoming tests for examples.

andrejbauer and others added 23 commits November 11, 2015 16:17
It was not possible to parse `'bar 'foo` (only `'bar ('foo)` was accepted).
Also cleaned up some other printing functions. For instance,
judgement may now be printied inline as an argument to a tag,
whereas previously it was always printed on the top level, so
it required no parentheses.
To be considered: when comparing ctx |- te : t and ctx' |- te' : t', do we only compare te and te'?
@SkySkimmer SkySkimmer added this to the Programming language milestone Nov 16, 2015
andrejbauer added a commit that referenced this pull request Nov 16, 2015
@andrejbauer andrejbauer merged commit 02d9eae into Andromedans:master Nov 16, 2015
@SkySkimmer SkySkimmer deleted the meta-level-data branch November 27, 2015 10:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants