Purity and Effect in Programming Languages

Published: June 24, 2020, 3 p.m.

There is a dimension of programming language design with imperative programs on one side and declarative programs on the other. This dimension corresponds to that across telling a computer how to get a result versus what result to get, where imperative languages embody the former and declarative languages the latter. Effect -- the impacts programs  have on outer, implicit contents (e.g. writing to memory, printing "hello world" to the console) -- are intuitive in the imperative but frustrating in the declarative framework. Henry's thesis builds up a way to implement imperative-styled effects in a completely pure declarative language.

Henry's thesis on GitHub.

Lisp programming language.