The Essence of Codata and Its Implementations

dc.contributor.advisorAriola, Zena
dc.contributor.authorSullivan, Zachary
dc.date.accessioned2018-09-06T22:03:33Z
dc.date.available2018-09-06T22:03:33Z
dc.date.issued2018-09-06
dc.description.abstractData types are a widely-used feature of functional programming languages that allow programmers to create abstractions and control branching computations. Instances of data types are introduced by applying one of a disjoint set of constructors and are eliminated by pattern matching on the constructor used. Dually, codata types are defined by their destructors, are introduced by copattern matching on their context, and eliminated by applying destructors. We extend motivation for codata types to include adding types that satisfy the extensional laws and adding an abstraction for constraining clients of code. We also improve on work implementing codata by developing an untyped compilation technique for codata that works for both call-by-name and call-by-value evaluation strategies and scales to simple and indexed type systems. We demonstrate the practicality of our technique by implementing a prototype compiler and a Haskell language extension.en_US
dc.identifier.urihttps://hdl.handle.net/1794/23832
dc.language.isoen_US
dc.publisherUniversity of Oregon
dc.rightsAll Rights Reserved.
dc.subjectCodataen_US
dc.subjectCompilationen_US
dc.subjectDualityen_US
dc.titleThe Essence of Codata and Its Implementations
dc.typeElectronic Thesis or Dissertation
thesis.degree.disciplineDepartment of Computer and Information Science
thesis.degree.grantorUniversity of Oregon
thesis.degree.levelmasters
thesis.degree.nameM.S.

Files

Original bundle
Now showing 1 - 1 of 1
Loading...
Thumbnail Image
Name:
Sullivan_oregon_0171N_12267.pdf
Size:
434.31 KB
Format:
Adobe Portable Document Format