TY - DATA T1 - Codebase Underlying the BSc Thesis: Type-Checking Modules and Imports using Scope Graphs PY - 2023/06/21 AU - Paul Hübner AU - Casper Bach Poulsen AU - Aron Zwaan UR - DO - 10.4121/288296b9-fcdf-4960-bab4-8aee3a46927c.v1 KW - scope graphs KW - type-checking KW - stratified type-checking KW - lm KW - relative imports KW - unordered imports KW - glob imports KW - haskell N2 -

The objective of this research was to determine whether a stratified type-checking approach using scope graphs could type-check the proof-of-concept language LM. Scope graphs provide a way to type-check real-world programming languages and their constructs. Previous implementations that type-check LM, a language with relative, unordered, and glob imports, do not halt. This dataset contains Haskell code for constructing and type-checking a scope graph of an LM program. It is based on the Phased Haskell library. With this implementation, the all test cases halt and the majority exhibit the correct behaviour with only one false-negative.


This implementation uses a five-step approach:

  1. Constructing a module hierarchy.
  2. Constructing a scope graph consisting of scopes and module sinks.
  3. Iteratively resolving imports and placing import edges in the scope graph.
  4. Adding all declarations of all modules to the scope graph.
  5. Type-checking the bodies of all declarations with respect to the scope graph.


Many test cases bundled with this data set are based on those for LMR (which is very similar to LM) and can be found here. On top of that. more test cases were derived and included. All test cases are denoted as annotated terms.


This data set is linked to a Bachelor's thesis completed at the EEMCS faculty at the TU Delft. A link will be added after publication.

ER -