Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/quasarbright/bidirectionaltypesystem2
My second attempt at implementing a bidirectional type sysem supporting higher rank polymorphism
https://github.com/quasarbright/bidirectionaltypesystem2
Last synced: 26 days ago
JSON representation
My second attempt at implementing a bidirectional type sysem supporting higher rank polymorphism
- Host: GitHub
- URL: https://github.com/quasarbright/bidirectionaltypesystem2
- Owner: quasarbright
- License: bsd-3-clause
- Created: 2020-07-25T19:03:16.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2020-08-03T20:11:54.000Z (over 4 years ago)
- Last Synced: 2024-11-06T07:42:20.054Z (3 months ago)
- Language: Haskell
- Size: 110 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: ChangeLog.md
- License: LICENSE
Awesome Lists containing this project
README
# BidirectionalTypeSystem2
My second attempt at implementing a bidirectional type system for the lambda calculus
Based on [this paper](https://www.cl.cam.ac.uk/~nk480/bidir.pdf)
```bibtex
@article{dunfield2013complete,
title={Complete and easy bidirectional typechecking for higher-rank polymorphism},
author={Dunfield, Joshua and Krishnaswami, Neelakantan R},
journal={ACM SIGPLAN Notices},
volume={48},
number={9},
pages={429--442},
year={2013},
publisher={ACM New York, NY, USA}
}
```---
grammar
```
expr : identifier
| "()"
| "\" identifier "." expr
| expr expr
| "(" expr "::" type ")"type : "1"
| lower_identifier
| "forall" lower_identifier "." type
| type "->" type
```
The language only has unit and lambdas, but you can still have higher
rank polymorphism be meaningful in such a simple system.