Source

C# Arrows / Dissertation / Dissertation.aux

Full commit
\relax 
\bibstyle{plain}
\@writefile{toc}{\contentsline {chapter}{\numberline {1}Introduction}{1}}
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\@writefile{toc}{\contentsline {section}{\numberline {1.1}Data binding}{1}}
\@writefile{toc}{\contentsline {section}{\numberline {1.2}Data binding in .NET}{2}}
\@writefile{toc}{\contentsline {section}{\numberline {1.3}Project inspirations}{2}}
\@writefile{toc}{\contentsline {chapter}{\numberline {2}Preparation}{5}}
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\@writefile{toc}{\contentsline {section}{\numberline {2.1}Background theory}{5}}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.1.1}Functional reactive programming}{5}}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.1.2}Arrows}{5}}
\@writefile{toc}{\contentsline {section}{\numberline {2.2}Requirements analysis}{6}}
\@writefile{toc}{\contentsline {section}{\numberline {2.3}Software engineering approach}{7}}
\@writefile{toc}{\contentsline {chapter}{\numberline {3}Implementation}{9}}
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\@writefile{toc}{\contentsline {section}{\numberline {3.1}Overview}{9}}
\@writefile{toc}{\contentsline {section}{\numberline {3.2}Arrows}{9}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.2.1}Overview}{9}}
\newlabel{sec:arrows_overview}{{3.2.1}{9}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.2.2}Simple arrows}{10}}
\newlabel{sec:simple_arrow_implementation}{{3.2.2}{10}}
\@writefile{lof}{\contentsline {figure}{\numberline {3.1}{\ignorespaces The Arr operator}}{11}}
\newlabel{fig:arr_operator}{{3.1}{11}}
\@writefile{lof}{\contentsline {figure}{\numberline {3.2}{\ignorespaces The Combine operator}}{11}}
\newlabel{fig:combine_operator}{{3.2}{11}}
\@writefile{lof}{\contentsline {figure}{\numberline {3.3}{\ignorespaces The First operator}}{11}}
\newlabel{fig:first_operator}{{3.3}{11}}
\@writefile{lof}{\contentsline {figure}{\numberline {3.4}{\ignorespaces The And operator}}{12}}
\newlabel{fig:and_operator}{{3.4}{12}}
\@writefile{toc}{\contentsline {subsubsection}{Challenges encountered}{12}}
\newlabel{sec:simple_arrow_challenges}{{3.2.2}{12}}
\@writefile{lof}{\contentsline {figure}{\numberline {3.5}{\ignorespaces Correspondence between Haskell and C$\sharp $ arrow operators}}{13}}
\newlabel{fig:operator_correspondence}{{3.5}{13}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.2.3}Invertible arrows}{14}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.2.4}List arrows}{15}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.2.5}Further utility arrows}{16}}
\newlabel{sec:further_utility_arrows}{{3.2.5}{16}}
\@writefile{toc}{\contentsline {section}{\numberline {3.3}Data binding}{16}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.3.1}Overall architecture}{16}}
\@writefile{lof}{\contentsline {figure}{\numberline {3.6}{\ignorespaces Overview of the binding method}}{17}}
\newlabel{fig:binding_framework}{{3.6}{17}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.3.2}Creating bindable sources and destinations}{18}}
\newlabel{lst:bindable_source_class}{{3.1}{18}}
\@writefile{lol}{\contentsline {lstlisting}{\numberline {3.1}Creating a bindable source class}{18}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.3.3}Creating bindings}{19}}
\@writefile{toc}{\contentsline {subsubsection}{Syntax and usage}{20}}
\newlabel{lst:creating_simple_binding}{{3.2}{20}}
\@writefile{lol}{\contentsline {lstlisting}{\numberline {3.2}Creating a binding between two properties}{20}}
\@writefile{toc}{\contentsline {subsubsection}{Two-way binding}{20}}
\@writefile{toc}{\contentsline {subsubsection}{Cycle and conflict detection}{21}}
\newlabel{lst:cycle_conflict_pseudocode}{{3.3}{22}}
\@writefile{lol}{\contentsline {lstlisting}{\numberline {3.3}Pseudocode for cycle and conflict detection}{22}}
\@writefile{toc}{\contentsline {subsubsection}{Many-to-many bindings}{22}}
\@writefile{lof}{\contentsline {figure}{\numberline {3.7}{\ignorespaces Marshalling a list of BindPoint sources to pass to an arrow and unmarshalling the result}}{23}}
\newlabel{fig:argument_marshalling}{{3.7}{23}}
\@writefile{toc}{\contentsline {subsubsection}{Problems encountered}{23}}
\@writefile{toc}{\contentsline {paragraph}{Type safety}{23}}
\@writefile{toc}{\contentsline {paragraph}{Binding to lists}{24}}
\@writefile{lol}{\contentsline {lstlisting}{\numberline {3.4}Explicitly reassigning a list to trigger a binding update}{24}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.3.4}Integration work with WPF}{24}}
\@writefile{lof}{\contentsline {figure}{\numberline {3.8}{\ignorespaces WPF integration demo}}{25}}
\newlabel{fig:wpf_integration_demo}{{3.8}{25}}
\@writefile{toc}{\contentsline {chapter}{\numberline {4}Evaluation}{27}}
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\@writefile{toc}{\contentsline {section}{\numberline {4.1}Correctness of arrow implementations}{27}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.1.1}Automated testing}{27}}
\@writefile{toc}{\contentsline {subsubsection}{Simple arrows}{28}}
\@writefile{toc}{\contentsline {subsubsection}{Invertible arrows}{28}}
\@writefile{toc}{\contentsline {section}{\numberline {4.2}Syntax evaluation}{29}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.2.1}Arrow syntax}{29}}
\@writefile{toc}{\contentsline {subsubsection}{Comparison with Haskell}{30}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.2.2}Binding syntax}{31}}
\@writefile{toc}{\contentsline {subsubsection}{Username two-way binding}{31}}
\@writefile{lof}{\contentsline {figure}{\numberline {4.1}{\ignorespaces The username two-way binding application}}{32}}
\newlabel{fig:case_study_name}{{4.1}{32}}
\@writefile{toc}{\contentsline {subsubsection}{List binding from a mock database}{33}}
\@writefile{lof}{\contentsline {figure}{\numberline {4.2}{\ignorespaces The list binding application}}{33}}
\newlabel{fig:case_study_list}{{4.2}{33}}
\@writefile{toc}{\contentsline {section}{\numberline {4.3}Performance testing}{34}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.3.1}Arrow performance}{34}}
\@writefile{toc}{\contentsline {subsubsection}{Measuring technique}{34}}
\@writefile{toc}{\contentsline {subsubsection}{Simple function results}{35}}
\@writefile{lof}{\contentsline {figure}{\numberline {4.3}{\ignorespaces Performance of arrows, Funcs and normal functions in implementing simple functionality}}{36}}
\newlabel{fig:simple_function_performance}{{4.3}{36}}
\@writefile{toc}{\contentsline {subsubsection}{List function results}{36}}
\@writefile{lof}{\contentsline {figure}{\numberline {4.4}{\ignorespaces Performance of arrows, Linq queries and normal (loop-based) functions in implementing simple list functionality}}{37}}
\newlabel{fig:list_function_performance}{{4.4}{37}}
\@writefile{toc}{\contentsline {subsubsection}{Overhead due to arrow chaining}{37}}
\newlabel{sec:arrow_chaining_overhead}{{4.3.1}{37}}
\@writefile{lof}{\contentsline {figure}{\numberline {4.5}{\ignorespaces Execution times of chains of identity functions}}{38}}
\newlabel{fig:arrow_chaining_overhead}{{4.5}{38}}
\@writefile{toc}{\contentsline {chapter}{\numberline {5}Conclusion}{39}}
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\@writefile{toc}{\contentsline {section}{\numberline {5.1}Future work}{39}}
\@writefile{toc}{\contentsline {subsection}{\numberline {5.1.1}Performance enhancements}{39}}
\newlabel{sec:performance_enhancements}{{5.1.1}{39}}
\@writefile{toc}{\contentsline {chapter}{\numberline {A}Arrow laws}{41}}
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\newlabel{sec:arrow_laws}{{A}{41}}
\@writefile{toc}{\contentsline {section}{\numberline {A.1}Normal arrow laws}{41}}
\newlabel{sec:simle_arrow_laws}{{A.1}{41}}
\@writefile{toc}{\contentsline {section}{\numberline {A.2}Invertible arrow laws}{42}}
\newlabel{sec:invertible_arrow_laws}{{A.2}{42}}
\@writefile{toc}{\contentsline {chapter}{\numberline {B}WPF integration demo -- code listings}{43}}
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\newlabel{sec:wpf_integration_code}{{B}{43}}
\@writefile{toc}{\contentsline {section}{\numberline {B.1}Creating the bindable source}{43}}
\@writefile{toc}{\contentsline {section}{\numberline {B.2}The binding arrow}{43}}
\@writefile{toc}{\contentsline {section}{\numberline {B.3}Doing the binding}{43}}
\@writefile{toc}{\contentsline {chapter}{\numberline {C}Code samples for case studies}{45}}
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\newlabel{sec:case_studies}{{C}{45}}
\@writefile{toc}{\contentsline {section}{\numberline {C.1}Username two-way binding}{45}}
\newlabel{sec:case_study_name}{{C.1}{45}}
\@writefile{toc}{\contentsline {subsection}{\numberline {C.1.1}Creating the bindable data source}{45}}
\@writefile{toc}{\contentsline {subsection}{\numberline {C.1.2}Creating the functionality for splitting the name}{46}}
\@writefile{toc}{\contentsline {subsection}{\numberline {C.1.3}Creating the binding}{47}}
\@writefile{toc}{\contentsline {section}{\numberline {C.2}List binding from a mock database}{49}}
\newlabel{sec:case_study_list}{{C.2}{49}}
\@writefile{toc}{\contentsline {subsection}{\numberline {C.2.1}Creating the bindable `database'}{49}}
\@writefile{toc}{\contentsline {subsection}{\numberline {C.2.2}Filtering and mapping the list}{49}}
\@writefile{toc}{\contentsline {subsection}{\numberline {C.2.3}Creating the binding}{50}}
\citation{arrow_calculus}
\citation{hughes_arrows}
\citation{arrows_robots_frp}
\citation{frp_first_principles}
\citation{composing_reactive_animations}
\citation{haskell_arrows}
\citation{arrows_and_computation}
\citation{hughes_programming_with_arrows}
\citation{wpf_data_binding_overview}
\citation{functional_reactive_programming}
\citation{invertible_arrows}
\citation{arrow_notation}
\bibstyle{plain}
\bibdata{Bibliography}
\bibcite{invertible_arrows}{1}
\bibcite{composing_reactive_animations}{2}
\bibcite{functional_reactive_programming}{3}
\bibcite{arrows_robots_frp}{4}
\bibcite{hughes_arrows}{5}
\bibcite{hughes_programming_with_arrows}{6}
\bibcite{arrow_calculus}{7}
\bibcite{wpf_data_binding_overview}{8}
\bibcite{haskell_arrows}{9}
\bibcite{arrow_notation}{10}
\bibcite{arrows_and_computation}{11}
\bibcite{frp_first_principles}{12}