Show simple item record

dc.contributor.advisorMoore, Matthew
dc.contributor.authorElliott, Andrei Darien
dc.date.accessioned2024-03-29T22:29:41Z
dc.date.available2024-03-29T22:29:41Z
dc.date.issued2022-01-01
dc.date.submitted2022
dc.identifier.otherhttp://dissertations.umi.com/ku:18386
dc.identifier.urihttps://hdl.handle.net/1808/34974
dc.description.abstractCode that can run asynchronously is important in a wide variety of situations, from user interfacesto communication over networks, to the use of concurrency for performance gains. One widely- used method of specifying asynchronous control flow is the Promise model as used in Javascript. Promises are powerful, but can be confusing and hard to debug. This problem is exacerbated by Javascript’s permissive type system, where erroneous code is likely to fail silently, with values being implicitly coerced into unexpected types at runtime. The work presented here implements Javascript-style Promises in Haskell, translating the model to a strongly typed framework where we can use the type system to rule out some classes of bugs. Common errors — such as failure to call one of the callbacks of an executor, which would, in Javascript, leave the Promise in an eternally-pending deadlock state — can be detected for free by the type system at compile time and corrected without even needing to run the code. Along the way, we demonstrate that Promises form a monad, providing a monad instance that allows code using Promises to be written using Haskell’s do notation.
dc.format.extent35 pages
dc.language.isoen
dc.publisherUniversity of Kansas
dc.rightsCopyright held by the author.
dc.subjectComputer science
dc.subjectasynchronous
dc.subjecthaskell
dc.subjectjavascript
dc.subjectpromises
dc.titlePromise Land: Proving Correctness with Strongly Typed Javascript-Style Promises
dc.typeThesis
dc.contributor.cmtememberAlexander, Perry
dc.contributor.cmtememberDavidson, Drew
dc.thesis.degreeDisciplineElectrical Engineering & Computer Science
dc.thesis.degreeLevelM.S.
dc.identifier.orcid0000-0003-4680-6563


Files in this item

Thumbnail
Thumbnail

This item appears in the following Collection(s)

Show simple item record