-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.tex
More file actions
149 lines (121 loc) · 5.07 KB
/
main.tex
File metadata and controls
149 lines (121 loc) · 5.07 KB
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
\documentclass[double,10pt] {beavtex}
% \usepackage[margin=1.5in,footskip=1.5in]{geometry}
\usepackage{natbib}
\usepackage{amsmath} %
\usepackage{xcolor}
\usepackage{color}
\usepackage{array}
\usepackage{wrapfig}
\usepackage{multirow}
\usepackage{tabularx}
% \usepackage{color, colortbl}
% \definecolor{name}{system}{definition}
% \definecolor{Gray}{gray}{0.9}
\usepackage{graphicx}
\graphicspath{ {./images/} }
% \usepackage[demo]{graphicx}
\usepackage{subcaption}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{microtype}
\usepackage{enumitem}
\usepackage{lipsum}
\usepackage{url}
\usepackage{lambda} %
\usepackage{listings}
\usepackage{indentfirst}
% \usepackage{hyperref}
\usepackage[hidelinks]{hyperref}
% use \term for introducing new terms
\newcommand{\term}[1]{\textit{#1}}
\newcommand{\ChcL}{\OB{\langle}}
\newcommand{\ChcR}{\OB{\rangle}}
\newcommand{\Chc}[3][f]{\OB{#1\langle#2,#3\rangle}}
\newcommand{\Opt}[2][f]{\OB{#1\langle#2\rangle}}
\newcommand{\ChcPP}[3][f]{\Chc[#1]{\prog{#2}}{\prog{#3}}}
\newcommand{\Step}{\OB{\;\mapsto}\;}
% macro to select a scaled-down version of Bera Mono (for instance)
\makeatletter
\newcommand\BeraMonottfamily{%
\def\fvm@Scale{0.85}% scales the font down
\fontfamily{fvm}\selectfont% selects the Bera Mono font
}
\makeatother
% \lstset{
% basicstyle=\linespread{1}\ttfamily\small, frame=single,numbersep=10pt,
% }
\lstset{
basicstyle=\linespread{1}\fontsize{9}{10}\selectfont\BeraMonottfamily, frame=single,numbersep=10pt,aboveskip=12pt
}
% citation groups
\newcommand\CCcore{EW11tosem,Walk13thesis,HW16fosd}
\newcommand\VPcore{EW11gttse,CEW16ecoop}
\newcommand\VPstretch{WE12gpce,EWC13fosd}
\newcommand\VPdata{Walk14onward,MMWWK17vamos,SE17fosd}
\newcommand\VPfacets{AF:POPL12,YYS12,Aus13,Sch16,Austin14, Pretnar15}
\newcommand\VPmultiexec{DP10,JR11,deG14,Kwon16,RS16,Kammar2013,Plotkin2001}
\newcommand\VPaware{NKN:ICSE14,Ngu15,MWKTS:ASE16}
% \newcommand\VEff{Pretnar15}
% cite later: Sch16 -- faceted execution in Haskell
\title{Integrating Side Effects in Variational Programs Using Algebraic Effects}
% \title{Handling Effects in Variational Programs}
\author{Ghadeer Alkubaish}
\degree{Master of Science}
\doctype{Thesis}
\department{Electrical Engineering and Computer Science}
\depttype{School}
\depthead{Director}
\major{Computer Science}
\advisor{Eric Walkingshaw}
\submitdate{Feb 24, 2020}
\commencementyear{2020}
\abstract{
Variational programming supports efficiently executing many related programs at once by encoding all of the programs in one "variational program" that captures the differences among them statically and explicitly. An open problem in variational programming is how to handle side effects---if two program variants perform different side effects, we cannot separate the effect of one variant from the other since the outside world is not variational. A potential solution is to create variation-aware execution environments for variational programs, for example, a variational file system that keeps track of file variants corresponding to program variants. However, it is infeasible to do this for all kinds of effects. Also, there are different ways to handle the interaction of effects and variation that are incompatible with each other, preventing a one-size-fits-all solution.
In this thesis, we argue that \term{algebraic effects} can be used to resolve the problem of combining variation and effects by enabling programmers to flexibly and incrementally extend a variational programming environment to handle new kinds of effects. We present a proof-of-concept prototype in the \emph{Eff} programming language that demonstrates how a variational programming environment can be extended to support file input/output. Crucially, such extensions are done at the library level, which enables handling new kinds of effects and handling existing effects in multiple ways, both of which are essential in variational programming applications.
}
% \acknowledgements{}
\acknowledgements{
\input{chapters/acknowledgement}
}
\begin{document}
\maketitle
\mainmatter
\chapter{Introduction}
\label{sec:introduction}
\input{chapters/ch1}
\chapter{Background: Algebraic Effects}
\label{sec:background}
\input{chapters/ch2}
\chapter{Variation as an Algebraic Effect}
\label{sec:Variational_exe}
\input{chapters/ch3}
\chapter{Variational Programming and Effects}
\label{sec:Variational_effects}
\input{chapters/ch4}
\chapter{Variational File I/O: Writing}
\label{sec:file_IO_writing}
\input{chapters/ch5}
\chapter{Variational Queue}
\label{sec:queue_lib}
\input{chapters/ch6}
\chapter{Variational File I/O: Reading}
\label{sec:file_IO_reading}
\input{chapters/ch7}
\chapter{Limitations of Variation as an Effect}
\label{sec:efficiency}
\input{chapters/ch8}
\chapter{Related Work}
\label{sec:rw}
\input{chapters/relatedWork}
\chapter{Conclusion and Future Work}
\label{sec:conc}
\input{chapters/conclusion}
\pagebreak
\bibliography{c/eric,c/martin,c/change,c/vds,c/fp,c/error-reporting,c/misc,c/dblp2_short}
\bibliographystyle{plain}
\pagebreak
\appendix
\chapter{Parsing the Boolean Formula of a Choice}
\label{sec:ctx_parser}
\input{chapters/appendix}
\end{document}