A Lazy to Strict Language Compiler

dc.contributor.authorTham, Philip
dc.contributor.departmentGöteborgs universitet/Institutionen för data- och informationsteknikswe
dc.contributor.departmentUniversity of Gothenburg/Department of Computer Science and Engineeringeng
dc.date.accessioned2017-06-21T07:14:14Z
dc.date.available2017-06-21T07:14:14Z
dc.date.issued2017-06-21
dc.description.abstractThe evaluation strategies of programming languages can be broadly categorised as strict or lazy. A common approach to strict evaluation is to implement a call-by-value semantics that always evaluates expressions when they are bound to variables, while lazy evaluation is often implemented as call-by-need semantics that evaluates expressions when they are needed for some computation. Lazy semantics makes use of a data structure called thunk that contains an expression, whose evaluation has become suspended, together with its environment. This thesis presents (1) a Haskell de nition of the existing semantics of CakeML, a strict programming language, (2) a Haskell de nition of a lazy semantics for the pure part of CakeML, and (3) a Haskell implementation of a compiler that compiles lazy CakeML to strict CakeML as de ned in (1) and (2). The compiler makes use of stateful features in strict CakeML to optimise evaluation so that each thunk is evaluated at most once, simulating a call-by-need semantics.sv
dc.identifier.urihttp://hdl.handle.net/2077/52627
dc.language.isoengsv
dc.setspec.uppsokTechnology
dc.titleA Lazy to Strict Language Compilersv
dc.typetext
dc.type.degreeStudent essay
dc.type.uppsokH2

Files

Original bundle

Now showing 1 - 1 of 1
No Thumbnail Available
Name:
gupea_2077_52627_1.pdf
Size:
397.48 KB
Format:
Adobe Portable Document Format
Description:

License bundle

Now showing 1 - 1 of 1
No Thumbnail Available
Name:
license.txt
Size:
876 B
Format:
Item-specific license agreed upon to submission
Description:

Collections