Master’s Thesis Presentation • Programming Languages — TreeGen: A Monotonically Impure Functional LanguageExport this event to calendar

Monday, August 10, 2020 — 2:00 PM EDT

Please note: This master’s thesis presentation will be given online.

Alistair Hackett, Master’s candidate
David R. Cheriton School of Computer Science

We present TreeGen, an impure functional language designed to express, consume, and validate JSON-like documents, as well as generate text files. The language aims to provide a more reliable and flexible way to create customised Interface Definition Languages, since the current state of the art is implemented via monolithic, ad-hoc codebases which cannot easily be modified.

TreeGen’s principal contribution, aside from being tailored to the domain of manipulating documents and generating text, is the concept of monotonic mutability: despite being an impure scripting language, its execution remains deterministic under arbitrary reordering of operations, making it robust to many common classes of programmer error possible in languages that allow unchecked mutability.

We prove this by basing TreeGen’s unordered constraint-based formal semantics on a partially-ordered model of TreeGen’s heap, then showing that the execution of any TreeGen expression’s constraint set is deterministic under chaotic iteration.

We also give notes on our experience implementing the language. This includes a model for execution tracing and error reporting, necessary data structures to practically implement the formal semantics, related performance issues, and comments on potential mitigations of those performance issues.

Location 
Online presentation
200 University Avenue West

Waterloo, ON N2L 3G1
Canada

S M T W T F S
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
  1. 2020 (184)
    1. October (3)
    2. September (21)
    3. August (28)
    4. July (14)
    5. June (18)
    6. May (17)
    7. April (20)
    8. March (16)
    9. February (25)
    10. January (22)
  2. 2019 (255)
    1. December (21)
    2. November (25)
    3. October (16)
    4. September (20)
    5. August (18)
    6. July (12)
    7. June (23)
    8. May (23)
    9. April (32)
    10. March (25)
    11. February (16)
    12. January (24)
  3. 2018 (220)
  4. 2017 (36)
  5. 2016 (21)
  6. 2015 (36)
  7. 2014 (33)
  8. 2013 (23)
  9. 2012 (4)
  10. 2011 (1)
  11. 2010 (1)
  12. 2009 (1)
  13. 2008 (1)