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

Parametrized list type #272

Merged
merged 14 commits into from
Jan 25, 2021
Merged

Parametrized list type #272

merged 14 commits into from
Jan 25, 2021

Conversation

yannham
Copy link
Member

@yannham yannham commented Jan 21, 2021

Close #171. The list type is now parametrized by the type of its elements. The standard List is kept as an alias for List Dyn, both in the grammar and in error reporting messages. The list contract is updated and the types of the lists module of the stdlib are improved accordingly.

This introduces a slight regression, that is the typechecker now rejects [1, "a", false] : List because currently nothing unifies with the dynamic type, unless an explicit case is used. We could make a special case to have this typecheck again, but it seems adhoc and is actually part of a bigger issue to think about, see #244 for example. Maybe bidirectional typechecking could also help here.

@yannham yannham marked this pull request as ready for review January 22, 2021 11:05
@yannham yannham requested a review from aspiwack January 22, 2021 11:05
@yannham yannham mentioned this pull request Jan 22, 2021
src/error.rs Outdated Show resolved Hide resolved
@@ -316,6 +318,19 @@ impl Types {
}
}
}

/// Determine if a type is an atom, that is a either an atom or a type delimited by specific
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a slightly confusing sentence.

It also feels like a bit overspecialised. More generally, you may need to know whether something has tighter priority than its surrounding or not. Not an urgent thing to fix, though.

yannham and others added 2 commits January 25, 2021 08:33
Co-authored-by: Arnaud Spiwack <arnaud.spiwack@tweag.io>
@yannham yannham merged commit c2ebd94 into master Jan 25, 2021
@yannham yannham deleted the feature/parametrized-lists branch January 25, 2021 09:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Parametrized list type
2 participants