Source

C# Arrows / Dissertation / Dissertation.aux

Full commit
\relax 
\bibstyle{plain}
\citation{mvvm}
\@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}}
\citation{composing_reactive_animations}
\citation{hughes_arrows}
\citation{monads}
\@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}}
\citation{fogbugz}
\@writefile{toc}{\contentsline {section}{\numberline {2.3}Software engineering approach}{7}}
\citation{bitbucket}
\@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}}
\citation{extension_methods}
\@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{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 {subsubsection}{Challenges encountered}{13}}
\newlabel{sec:simple_arrow_challenges}{{3.2.2}{13}}
\citation{invertible_arrows}
\@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}{17}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.3.1}Overall architecture}{17}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.3.2}Creating bindable sources and destinations}{17}}
\@writefile{lof}{\contentsline {figure}{\numberline {3.6}{\ignorespaces Overview of the binding method}}{18}}
\newlabel{fig:binding_framework}{{3.6}{18}}
\newlabel{lst:bindable_source_class}{{3.1}{18}}
\@writefile{lol}{\contentsline {lstlisting}{\numberline {3.1}Creating a bindable source class}{18}}
\citation{postsharp_propertychanged}
\citation{postsharp_locationinterception}
\@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}{21}}
\@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}{23}}
\newlabel{sec:many_many_bindings}{{3.3.3}{23}}
\@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}{24}}
\@writefile{toc}{\contentsline {paragraph}{Type safety}{24}}
\@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}{25}}
\@writefile{lof}{\contentsline {figure}{\numberline {3.8}{\ignorespaces WPF integration demo}}{26}}
\newlabel{fig:wpf_integration_demo}{{3.8}{26}}
\citation{haskell_wiki_arrows}
\@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}}
\newlabel{sec:syntax_comparison_haskell}{{4.2.1}{30}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.2.2}Binding syntax}{31}}
\@writefile{toc}{\contentsline {subsubsection}{Username two-way binding}{32}}
\@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}}{34}}
\newlabel{fig:case_study_list}{{4.2}{34}}
\citation{total_processor_time}
\@writefile{toc}{\contentsline {section}{\numberline {4.3}Performance testing}{35}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.3.1}Arrow performance}{35}}
\@writefile{toc}{\contentsline {subsubsection}{Measuring technique}{35}}
\@writefile{toc}{\contentsline {subsubsection}{Simple function results}{35}}
\@writefile{toc}{\contentsline {subsubsection}{List function results}{36}}
\@writefile{lof}{\contentsline {figure}{\numberline {4.3}{\ignorespaces Performance of arrows, Funcs and normal functions in implementing simple functionality}}{37}}
\newlabel{fig:simple_function_performance}{{4.3}{37}}
\@writefile{lof}{\contentsline {figure}{\numberline {4.4}{\ignorespaces Performance of arrows, Linq queries and normal (loop-based) functions in implementing simple list functionality}}{38}}
\newlabel{fig:list_function_performance}{{4.4}{38}}
\@writefile{toc}{\contentsline {subsubsection}{Overhead due to arrow chaining}{38}}
\newlabel{sec:arrow_chaining_overhead}{{4.3.1}{38}}
\@writefile{lof}{\contentsline {figure}{\numberline {4.5}{\ignorespaces Execution times of chains of identity functions}}{39}}
\newlabel{fig:arrow_chaining_overhead}{{4.5}{39}}
\@writefile{toc}{\contentsline {chapter}{\numberline {5}Conclusions}{41}}
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\@writefile{toc}{\contentsline {section}{\numberline {5.1}Future work}{41}}
\@writefile{toc}{\contentsline {subsection}{\numberline {5.1.1}Custom tuple type}{41}}
\@writefile{toc}{\contentsline {subsection}{\numberline {5.1.2}Better integration with WPF}{41}}
\@writefile{toc}{\contentsline {subsection}{\numberline {5.1.3}Feedback arrows}{42}}
\@writefile{toc}{\contentsline {subsection}{\numberline {5.1.4}Syntax enhancements}{42}}
\@writefile{toc}{\contentsline {subsection}{\numberline {5.1.5}Performance}{42}}
\newlabel{sec:performance_enhancements}{{5.1.5}{42}}
\@writefile{toc}{\contentsline {section}{\numberline {5.2}Final words}{42}}
\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}
\citation{postsharp}
\bibstyle{plain}
\bibdata{Bibliography}
\bibcite{postsharp}{1}
\bibcite{invertible_arrows}{2}
\bibcite{bitbucket}{3}
\bibcite{postsharp_propertychanged}{4}
\bibcite{postsharp_locationinterception}{5}
\bibcite{composing_reactive_animations}{6}
\bibcite{functional_reactive_programming}{7}
\bibcite{arrows_robots_frp}{8}
\bibcite{hughes_arrows}{9}
\bibcite{hughes_programming_with_arrows}{10}
\bibcite{arrow_calculus}{11}
\bibcite{wpf_data_binding_overview}{12}
\bibcite{extension_methods}{13}
\bibcite{total_processor_time}{14}
\bibcite{haskell_arrows}{15}
\bibcite{arrow_notation}{16}
\bibcite{arrows_and_computation}{17}
\bibcite{mvvm}{18}
\bibcite{fogbugz}{19}
\bibcite{frp_first_principles}{20}
\bibcite{haskell_wiki_arrows}{21}
\bibcite{monads}{22}
\@writefile{toc}{\contentsline {chapter}{\numberline {A}Arrow laws}{47}}
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\newlabel{sec:arrow_laws}{{A}{47}}
\@writefile{toc}{\contentsline {section}{\numberline {A.1}Normal arrow laws}{47}}
\newlabel{sec:simle_arrow_laws}{{A.1}{47}}
\@writefile{toc}{\contentsline {section}{\numberline {A.2}Invertible arrow laws}{48}}
\newlabel{sec:invertible_arrow_laws}{{A.2}{48}}
\@writefile{toc}{\contentsline {chapter}{\numberline {B}WPF integration demo -- code listings}{51}}
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\newlabel{sec:wpf_integration_code}{{B}{51}}
\@writefile{toc}{\contentsline {section}{\numberline {B.1}Creating the bindable source}{51}}
\@writefile{toc}{\contentsline {section}{\numberline {B.2}The binding arrow}{51}}
\@writefile{toc}{\contentsline {section}{\numberline {B.3}Doing the binding}{51}}
\@writefile{toc}{\contentsline {chapter}{\numberline {C}Code samples for case studies}{53}}
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\newlabel{sec:case_studies}{{C}{53}}
\@writefile{toc}{\contentsline {section}{\numberline {C.1}Username two-way binding}{53}}
\newlabel{sec:case_study_name}{{C.1}{53}}
\@writefile{toc}{\contentsline {subsection}{\numberline {C.1.1}Creating the bindable data source}{53}}
\@writefile{toc}{\contentsline {subsection}{\numberline {C.1.2}Creating the functionality for splitting the name}{54}}
\@writefile{toc}{\contentsline {subsection}{\numberline {C.1.3}Creating the binding}{55}}
\@writefile{toc}{\contentsline {section}{\numberline {C.2}List binding from a mock database}{57}}
\newlabel{sec:case_study_list}{{C.2}{57}}
\@writefile{toc}{\contentsline {subsection}{\numberline {C.2.1}Creating the bindable `database'}{57}}
\@writefile{toc}{\contentsline {subsection}{\numberline {C.2.2}Filtering and mapping the list}{57}}
\@writefile{toc}{\contentsline {subsection}{\numberline {C.2.3}Creating the binding}{58}}
\citation{javabinding}
\citation{netbinding}
\@writefile{toc}{\contentsline {chapter}{\numberline {D}Project Proposal}{59}}
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\citation{elliott98}
\citation{haskellarrows}
\citation{paterson03}
\citation{notifypropertychanged}
\@writefile{lof}{\contentsline {figure}{\numberline {D.1}{\ignorespaces The binding setup}}{61}}
\citation{hughes98}
\citation{lindley08}
\citation{postsharp}
\bibcite{elliott98}{1}
\bibcite{haskellarrows}{2}
\bibcite{hughes98}{3}
\bibcite{lindley08}{4}
\bibcite{netbinding}{5}
\bibcite{javabinding}{6}
\bibcite{paterson03}{7}
\bibcite{notifypropertychanged}{8}
\bibcite{postsharp}{9}