Commits

David Barker committed edebc19

Added more explanation of why arrows are used rather than Funcs and added references to preparation

Comments (0)

Files changed (11)

Dissertation/Bibliography.bib

 	title = {{The Roslyn Project}},
 	author = {{MSDN}},
 	note = {\url{http://msdn.microsoft.com/en-us/vstudio/hh500769} (accessed on 09/05/2013)}
+}
+
+@misc{backbonejs,
+	title = {{Backbone.js}},
+	author = {Jeremy Ashkenas},
+	note = {\url{http://backbonejs.org} (accessed on 12/05/2013)}
+}
+
+@misc{bbb,
+	title = {{BetterBeansBinding}},
+	author = {BetterBeansBinding},
+	note = {\url{https://kenai.com/projects/betterbeansbinding/pages/Home} (accessed on 12/05/2013)}
+}
+
+@misc{beanfabrics,
+	title = {{Beanfabrics}},
+	author = {Beanfabrics},
+	note = {\url{https://code.google.com/p/beanfabrics/} (accessed on 12/05/2013)}
 }

Dissertation/Dissertation.aux

 \relax 
 \bibstyle{plain}
 \citation{mvvm}
+\citation{bbb}
+\citation{beanfabrics}
+\citation{backbonejs}
 \@writefile{toc}{\contentsline {chapter}{\numberline {1}Introduction}{1}}
 \@writefile{lof}{\addvspace {10\p@ }}
 \@writefile{lot}{\addvspace {10\p@ }}
 \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.3}{\ignorespaces The First operator}}{12}}
+\newlabel{fig:first_operator}{{3.3}{12}}
 \@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}}
 \@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.3}Invertible arrows}{15}}
 \@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 {subsection}{\numberline {3.2.5}Further utility arrows}{17}}
+\newlabel{sec:further_utility_arrows}{{3.2.5}{17}}
 \@writefile{toc}{\contentsline {section}{\numberline {3.3}Data binding}{17}}
 \@writefile{toc}{\contentsline {subsection}{\numberline {3.3.1}Overall architecture}{17}}
 \@writefile{lof}{\contentsline {figure}{\numberline {3.6}{\ignorespaces Overview of the binding method}}{18}}
 \@writefile{lol}{\contentsline {lstlisting}{\numberline {3.1}Creating a bindable source class}{19}}
 \@writefile{toc}{\contentsline {subsection}{\numberline {3.3.3}Creating bindings}{20}}
 \@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}}
+\newlabel{lst:creating_simple_binding}{{3.2}{21}}
+\@writefile{lol}{\contentsline {lstlisting}{\numberline {3.2}Creating a binding between two properties}{21}}
 \@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}{Cycle and conflict detection}{22}}
+\newlabel{lst:cycle_conflict_pseudocode}{{3.3}{23}}
+\@writefile{lol}{\contentsline {lstlisting}{\numberline {3.3}Pseudocode for cycle and conflict detection}{23}}
 \@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}}{24}}
 \newlabel{fig:argument_marshalling}{{3.7}{24}}
 \@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 {paragraph}{Binding to lists}{25}}
+\@writefile{lol}{\contentsline {lstlisting}{\numberline {3.4}Explicitly reassigning a list to trigger a binding update}{25}}
 \@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}}
 \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{roslyn}{15}
-\bibcite{haskell_arrows}{16}
-\bibcite{arrow_notation}{17}
-\bibcite{arrows_and_computation}{18}
-\bibcite{mvvm}{19}
-\bibcite{fogbugz}{20}
-\bibcite{frp_first_principles}{21}
-\bibcite{haskell_wiki_arrows}{22}
-\bibcite{monads}{23}
-\@writefile{toc}{\contentsline {chapter}{\numberline {A}Arrow laws}{47}}
+\bibcite{backbonejs}{3}
+\bibcite{beanfabrics}{4}
+\bibcite{bbb}{5}
+\bibcite{bitbucket}{6}
+\bibcite{postsharp_propertychanged}{7}
+\bibcite{postsharp_locationinterception}{8}
+\bibcite{composing_reactive_animations}{9}
+\bibcite{functional_reactive_programming}{10}
+\bibcite{arrows_robots_frp}{11}
+\bibcite{hughes_arrows}{12}
+\bibcite{hughes_programming_with_arrows}{13}
+\bibcite{arrow_calculus}{14}
+\bibcite{wpf_data_binding_overview}{15}
+\bibcite{extension_methods}{16}
+\bibcite{total_processor_time}{17}
+\bibcite{roslyn}{18}
+\bibcite{haskell_arrows}{19}
+\bibcite{arrow_notation}{20}
+\bibcite{arrows_and_computation}{21}
+\bibcite{mvvm}{22}
+\bibcite{fogbugz}{23}
+\bibcite{frp_first_principles}{24}
+\bibcite{haskell_wiki_arrows}{25}
+\bibcite{monads}{26}
+\@writefile{toc}{\contentsline {chapter}{\numberline {A}Arrow laws}{48}}
 \@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}}
+\newlabel{sec:arrow_laws}{{A}{48}}
+\@writefile{toc}{\contentsline {section}{\numberline {A.1}Normal arrow laws}{48}}
+\newlabel{sec:simle_arrow_laws}{{A.1}{48}}
+\@writefile{toc}{\contentsline {section}{\numberline {A.2}Invertible arrow laws}{49}}
+\newlabel{sec:invertible_arrow_laws}{{A.2}{49}}
 \@writefile{toc}{\contentsline {chapter}{\numberline {B}WPF integration demo -- code listings}{51}}
 \@writefile{lof}{\addvspace {10\p@ }}
 \@writefile{lot}{\addvspace {10\p@ }}

Dissertation/Dissertation.bbl

 \newblock In {\em Proceedings of the 2005 ACM SIGPLAN workshop on Haskell},
   pages 86--97. ACM Press, 2006.
 
+\bibitem{backbonejs}
+Jeremy Ashkenas.
+\newblock {Backbone.js}.
+\newblock \url{http://backbonejs.org} (accessed on 12/05/2013).
+
+\bibitem{beanfabrics}
+Beanfabrics.
+\newblock {Beanfabrics}.
+\newblock \url{https://code.google.com/p/beanfabrics/} (accessed on
+  12/05/2013).
+
+\bibitem{bbb}
+BetterBeansBinding.
+\newblock {BetterBeansBinding}.
+\newblock \url{https://kenai.com/projects/betterbeansbinding/pages/Home}
+  (accessed on 12/05/2013).
+
 \bibitem{bitbucket}
 BitBucket.
 \newblock {BitBucket}.

Dissertation/Dissertation.blg

 This is BibTeX, Version 0.99dThe top-level auxiliary file: Dissertation.aux
 The style file: plain.bst
-Illegal, another \bibstyle command---line 137 of file Dissertation.aux
+Illegal, another \bibstyle command---line 140 of file Dissertation.aux
  : \bibstyle
  :          {plain}
 I'm skipping whatever remains of this command

Dissertation/Dissertation.lof

 \addvspace {10\p@ }
 \contentsline {figure}{\numberline {3.1}{\ignorespaces The Arr operator}}{11}
 \contentsline {figure}{\numberline {3.2}{\ignorespaces The Combine operator}}{11}
-\contentsline {figure}{\numberline {3.3}{\ignorespaces The First operator}}{11}
+\contentsline {figure}{\numberline {3.3}{\ignorespaces The First operator}}{12}
 \contentsline {figure}{\numberline {3.4}{\ignorespaces The And operator}}{12}
 \contentsline {figure}{\numberline {3.5}{\ignorespaces Correspondence between Haskell and C$\sharp $ arrow operators}}{13}
 \contentsline {figure}{\numberline {3.6}{\ignorespaces Overview of the binding method}}{18}

Dissertation/Dissertation.log

-This is pdfTeX, Version 3.1415926-2.3-1.40.12 (MiKTeX 2.9 64-bit) (preloaded format=pdflatex 2012.10.5)  10 MAY 2013 11:56
+This is pdfTeX, Version 3.1415926-2.3-1.40.12 (MiKTeX 2.9 64-bit) (preloaded format=pdflatex 2012.10.5)  12 MAY 2013 16:13
 entering extended mode
 **Dissertation.tex
 
 
 ]
 LaTeX Font Info:    External font `cmex10' loaded for size
-(Font)              <5> on input line 147.
+(Font)              <5> on input line 144.
  [2] [3] [4
 
 ]
 [9
 
 
-] <fig/ArrOperator.pdf, id=71, 259.19409pt x 106.89937pt>
+] [10] <fig/ArrOperator.pdf, id=74, 259.19409pt x 106.89937pt>
 File: fig/ArrOperator.pdf Graphic file (type pdf)
 
 <use fig/ArrOperator.pdf>
-Package pdftex.def Info: fig/ArrOperator.pdf used on input line 238.
+Package pdftex.def Info: fig/ArrOperator.pdf used on input line 235.
 (pdftex.def)             Requested size: 142.26378pt x 58.67412pt.
- [10]
-<fig/CompositionOperator.pdf, id=76, 349.81836pt x 107.12521pt>
+
+<fig/CompositionOperator.pdf, id=75, 349.81836pt x 107.12521pt>
 File: fig/CompositionOperator.pdf Graphic file (type pdf)
 
 <use fig/CompositionOperator.pdf>
-Package pdftex.def Info: fig/CompositionOperator.pdf used on input line 251.
+Package pdftex.def Info: fig/CompositionOperator.pdf used on input line 248.
 (pdftex.def)             Requested size: 142.26378pt x 43.56526pt.
 LaTeX Font Info:    Font shape `OT1/cmtt/bx/n' in size <12> not available
-(Font)              Font shape `OT1/cmtt/m/n' tried instead on input line 259.
+(Font)              Font shape `OT1/cmtt/m/n' tried instead on input line 256.
 
-<fig/FirstOperator.pdf, id=77, 262.49013pt x 219.44516pt>
+<fig/FirstOperator.pdf, id=76, 262.49013pt x 219.44516pt>
 File: fig/FirstOperator.pdf Graphic file (type pdf)
 
 <use fig/FirstOperator.pdf>
-Package pdftex.def Info: fig/FirstOperator.pdf used on input line 270.
+Package pdftex.def Info: fig/FirstOperator.pdf used on input line 267.
 (pdftex.def)             Requested size: 142.26378pt x 118.93391pt.
  [11 <C:/Users/David/Documents/Visual Studio 2010/Projects/ArrowDataBinding/Dis
 sertation/fig/ArrOperator.pdf> <C:/Users/David/Documents/Visual Studio 2010/Pro
-jects/ArrowDataBinding/Dissertation/fig/CompositionOperator.pdf> <C:/Users/Davi
-d/Documents/Visual Studio 2010/Projects/ArrowDataBinding/Dissertation/fig/First
-Operator.pdf>]
-Underfull \hbox (badness 1082) in paragraph at lines 283--284
+jects/ArrowDataBinding/Dissertation/fig/CompositionOperator.pdf>]
+Underfull \hbox (badness 1082) in paragraph at lines 280--281
 []\OT1/cmr/m/n/12 This is com-monly thought of as com-bin-ing lef-t-Ar-row and 
 rightAr-row
  []
 
-<fig/AndOperator.pdf, id=106, 565.02242pt x 248.2334pt>
+<fig/AndOperator.pdf, id=98, 565.02242pt x 248.2334pt>
 File: fig/AndOperator.pdf Graphic file (type pdf)
 
 <use fig/AndOperator.pdf>
-Package pdftex.def Info: fig/AndOperator.pdf used on input line 287.
+Package pdftex.def Info: fig/AndOperator.pdf used on input line 284.
 (pdftex.def)             Requested size: 142.26378pt x 62.50134pt.
  [12 <C:/Users/David/Documents/Visual Studio 2010/Projects/ArrowDataBinding/Dis
-sertation/fig/AndOperator.pdf>] [13] [14] [15]
-[16] <fig/BindingFramework.pdf, id=133, 568.86269pt x 261.31383pt>
+sertation/fig/FirstOperator.pdf> <C:/Users/David/Documents/Visual Studio 2010/P
+rojects/ArrowDataBinding/Dissertation/fig/AndOperator.pdf>] [13] [14] [15] [16]
+ [17]
+<fig/BindingFramework.pdf, id=136, 568.86269pt x 261.31383pt>
 File: fig/BindingFramework.pdf Graphic file (type pdf)
 
 <use fig/BindingFramework.pdf>
-Package pdftex.def Info: fig/BindingFramework.pdf used on input line 425.
+Package pdftex.def Info: fig/BindingFramework.pdf used on input line 422.
 (pdftex.def)             Requested size: 411.93877pt x 189.23434pt.
- [17] [18 <C:/Users/David/Documents/Visual Studio 2010/Projects/ArrowDataBindin
-g/Dissertation/fig/BindingFramework.pdf>]
-[19] [20]
-LaTeX Font Info:    Try loading font information for OMS+cmr on input line 490.
+ [18 <C:/Users/David/Documents/Visual Studio 2010/Projects/ArrowDataBinding/Dis
+sertation/fig/BindingFramework.pdf>] [19]
+[20] [21]
+LaTeX Font Info:    Try loading font information for OMS+cmr on input line 487.
 
  ("C:\Program Files\MiKTeX 2.9\tex\latex\base\omscmr.fd"
 File: omscmr.fd 1999/05/25 v2.5h Standard LaTeX font definitions
 )
 LaTeX Font Info:    Font shape `OMS/cmr/m/n' in size <12> not available
-(Font)              Font shape `OMS/cmsy/m/n' tried instead on input line 490.
- [21]
-[22] <fig/ArgumentMarshalling.pdf, id=178, 511.24123pt x 147.77261pt>
+(Font)              Font shape `OMS/cmsy/m/n' tried instead on input line 487.
+ [22]
+[23] <fig/ArgumentMarshalling.pdf, id=181, 511.24123pt x 147.77261pt>
 File: fig/ArgumentMarshalling.pdf Graphic file (type pdf)
 
 <use fig/ArgumentMarshalling.pdf>
-Package pdftex.def Info: fig/ArgumentMarshalling.pdf used on input line 522.
+Package pdftex.def Info: fig/ArgumentMarshalling.pdf used on input line 519.
 (pdftex.def)             Requested size: 411.93877pt x 119.07281pt.
- [23] [24 <C:/Users/David/Documents/Visual Studio 2010/Projects/ArrowDataBindin
-g/Dissertation/fig/ArgumentMarshalling.pdf>]
-<fig/WPFIntegrationDemo.png, id=195, 571.13374pt x 203.76125pt>
+ [24 <C:/Users/David/Documents/Visual Studio 2010/Projects/ArrowDataBinding/Dis
+sertation/fig/ArgumentMarshalling.pdf>]
+[25] <fig/WPFIntegrationDemo.png, id=198, 571.13374pt x 203.76125pt>
 File: fig/WPFIntegrationDemo.png Graphic file (type png)
 
 <use fig/WPFIntegrationDemo.png>
-Package pdftex.def Info: fig/WPFIntegrationDemo.png used on input line 557.
+Package pdftex.def Info: fig/WPFIntegrationDemo.png used on input line 554.
 (pdftex.def)             Requested size: 411.93877pt x 146.96603pt.
- [25] [26 <C:/Users/David/Documents/Visual Studio 2010/Projects/ArrowDataBindin
-g/Dissertation/fig/WPFIntegrationDemo.png>]
+ [26 <C:/Users/David/Documents/Visual Studio 2010/Projects/ArrowDataBinding/Dis
+sertation/fig/WPFIntegrationDemo.png>]
 Chapter 4.
 [27
 
 File: fig/CaseStudyNameBinding.png Graphic file (type png)
 
 <use fig/CaseStudyNameBinding.png>
-Package pdftex.def Info: fig/CaseStudyNameBinding.png used on input line 682.
+Package pdftex.def Info: fig/CaseStudyNameBinding.png used on input line 679.
 (pdftex.def)             Requested size: 283.0568pt x 210.78699pt.
  [32 <C:/Users/David/Documents/Visual Studio 2010/Projects/ArrowDataBinding/Dis
 sertation/fig/CaseStudyNameBinding.png>]
 File: fig/CaseStudyListBinding.png Graphic file (type png)
 
 <use fig/CaseStudyListBinding.png>
-Package pdftex.def Info: fig/CaseStudyListBinding.png used on input line 703.
+Package pdftex.def Info: fig/CaseStudyListBinding.png used on input line 700.
 (pdftex.def)             Requested size: 411.93877pt x 292.66003pt.
  [33] [34 <C:/Users/David/Documents/Visual Studio 2010/Projects/ArrowDataBindin
 g/Dissertation/fig/CaseStudyListBinding.png>] [35]
 
 <use fig/SimpleFunctionPerformanceChart.pdf>
 Package pdftex.def Info: fig/SimpleFunctionPerformanceChart.pdf used on input l
-ine 760.
+ine 757.
 (pdftex.def)             Requested size: 411.93877pt x 214.71175pt.
  [36]
 <fig/ListFunctionPerformanceChart.pdf, id=237, 496.4172pt x 244.72725pt>
 
 <use fig/ListFunctionPerformanceChart.pdf>
 Package pdftex.def Info: fig/ListFunctionPerformanceChart.pdf used on input lin
-e 779.
+e 776.
 (pdftex.def)             Requested size: 411.93877pt x 203.08247pt.
  [37 <C:/Users/David/Documents/Visual Studio 2010/Projects/ArrowDataBinding/Dis
 sertation/fig/SimpleFunctionPerformanceChart.pdf>] <fig/IdentityChains.pdf, id=
 File: fig/IdentityChains.pdf Graphic file (type pdf)
 
 <use fig/IdentityChains.pdf>
-Package pdftex.def Info: fig/IdentityChains.pdf used on input line 793.
+Package pdftex.def Info: fig/IdentityChains.pdf used on input line 790.
 (pdftex.def)             Requested size: 411.93877pt x 179.69122pt.
  [38 <C:/Users/David/Documents/Visual Studio 2010/Projects/ArrowDataBinding/Dis
 sertation/fig/ListFunctionPerformanceChart.pdf>]
  []
 
 
-Underfull \hbox (badness 3735) in paragraph at lines 17--20
+Underfull \hbox (badness 3735) in paragraph at lines 34--37
 []\OT1/cmr/m/n/12 BitBucket.  Bit-Bucket.  $\OT1/cmtt/m/n/12 http : / / www . b
 itbucket . org$ \OT1/cmr/m/n/12 (ac-cessed on
  []
 
 
-Underfull \hbox (badness 10000) in paragraph at lines 28--33
+Underfull \hbox (badness 10000) in paragraph at lines 45--50
 $\OT1/cmtt/m/n/12 / / doc . postsharp . net / /postsharp -[] 2 . 1 / Default . 
 aspx # #PostSharp -[]$
  []
 
 
-Underfull \hbox (badness 10000) in paragraph at lines 28--33
+Underfull \hbox (badness 10000) in paragraph at lines 45--50
 $\OT1/cmtt/m/n/12 2 . 1 . chm / html / T _ PostSharp _ Aspects _ LocationInterc
 eptionAspect .$
  []
 [45
 
 ]
-Underfull \hbox (badness 2245) in paragraph at lines 77--81
+Underfull \hbox (badness 2245) in paragraph at lines 94--98
 []\OT1/cmr/m/n/12 MSDN.  Ex-ten-sion Meth-ods.  $\OT1/cmtt/m/n/12 http : / / ms
 dn . microsoft . com / en -[] us /$
  []
 
 
-Underfull \hbox (badness 7777) in paragraph at lines 83--88
+Underfull \hbox (badness 7777) in paragraph at lines 100--105
 []\OT1/cmr/m/n/12 MSDN.  Pro-ces-sor.TotalProcessorTime Prop-erty.  $\OT1/cmtt/
 m/n/12 http : / / msdn .$
  []
 
 
-Underfull \hbox (badness 10000) in paragraph at lines 83--88
+Underfull \hbox (badness 10000) in paragraph at lines 100--105
 $\OT1/cmtt/m/n/12 microsoft . com / en -[] us / library / system . diagnostics 
 . process .$
  []
 
 
-Underfull \hbox (badness 1308) in paragraph at lines 90--94
+Underfull \hbox (badness 1308) in paragraph at lines 107--111
 []\OT1/cmr/m/n/12 MSDN.  The Roslyn Project.  $\OT1/cmtt/m/n/12 http : / / msdn
  . microsoft . com / en -[] us /$
  []
 
-
-Underfull \hbox (badness 1478) in paragraph at lines 129--133
+[46]
+Underfull \hbox (badness 1478) in paragraph at lines 146--150
 []\OT1/cmr/m/n/12 Haskell Wiki.  Con-trol.Arrow.  $\OT1/cmtt/m/n/12 http : / / 
 www . haskell . org / ghc / docs /$
  []
 
-) [46]
+) [47]
 Appendix A.
-[47
-
-] [48] [49] [50
+[48
 
-]
+] [49] [50]
 Appendix B.
 LaTeX Font Info:    Font shape `OT1/cmtt/bx/n' in size <8> not available
-(Font)              Font shape `OT1/cmtt/m/n' tried instead on input line 976.
+(Font)              Font shape `OT1/cmtt/m/n' tried instead on input line 973.
 [51
 
+
 ] [52
 
 ]
 \pc@column@2=\box30
 \pc@column@width@2=\dimen120
 Package parcolumns Info: Width of column 1 calculated as 194.2195pt on input li
-ne 1020.
+ne 1017.
 Package parcolumns Info: Width of column 2 calculated as 194.2195pt on input li
-ne 1020.
+ne 1017.
 [53
 
 ]
 Package parcolumns Info: Width of column 1 calculated as 194.2195pt on input li
-ne 1075.
+ne 1072.
 Package parcolumns Info: Width of column 2 calculated as 194.2195pt on input li
-ne 1075.
+ne 1072.
  [54]
 Package parcolumns Info: Width of column 1 calculated as 194.2195pt on input li
-ne 1120.
+ne 1117.
 Package parcolumns Info: Width of column 2 calculated as 194.2195pt on input li
-ne 1120.
+ne 1117.
  [55] [56]
 Package parcolumns Info: Width of column 1 calculated as 194.2195pt on input li
-ne 1162.
+ne 1159.
 Package parcolumns Info: Width of column 2 calculated as 194.2195pt on input li
-ne 1162.
+ne 1159.
  [57
 
 ]
 Package parcolumns Info: Width of column 1 calculated as 194.2195pt on input li
-ne 1204.
+ne 1201.
 Package parcolumns Info: Width of column 2 calculated as 194.2195pt on input li
-ne 1204.
+ne 1201.
  [58]
 Appendix D.
 
 
  ) 
 Here is how much of TeX's memory you used:
- 3081 strings out of 494045
- 45312 string characters out of 3148387
+ 3084 strings out of 494045
+ 45342 string characters out of 3148387
  245619 words of memory out of 3000000
- 6343 multiletter control sequences out of 15000+200000
+ 6346 multiletter control sequences out of 15000+200000
  13106 words of font info for 47 fonts, out of 3000000 for 9000
  715 hyphenation exceptions out of 8191
- 27i,8n,40p,1424b,1506s stack positions out of 5000i,500n,10000p,200000b,50000s
+ 27i,8n,40p,1424b,1497s stack positions out of 5000i,500n,10000p,200000b,50000s
 <C:/Program Files/MiKTeX 2.9/fonts/type1/public/amsfonts/cm/cmbx12.pfb><C:/Pr
 ogram Files/MiKTeX 2.9/fonts/type1/public/amsfonts/cm/cmitt10.pfb><C:/Program F
 iles/MiKTeX 2.9/fonts/type1/public/amsfonts/cm/cmmi10.pfb><C:/Program Files/MiK
 TeX 2.9/fonts/type1/public/amsfonts/cm/cmtt10.pfb><C:/Program Files/MiKTeX 2.9/
 fonts/type1/public/amsfonts/cm/cmtt12.pfb><C:/Program Files/MiKTeX 2.9/fonts/ty
 pe1/public/amsfonts/cm/cmtt8.pfb>
-Output written on Dissertation.pdf (78 pages, 600047 bytes).
+Output written on Dissertation.pdf (78 pages, 601432 bytes).
 PDF statistics:
  667 PDF objects out of 1000 (max. 8388607)
  0 named destinations out of 1000 (max. 500000)
Add a comment to this file

Dissertation/Dissertation.pdf

Binary file modified.

Add a comment to this file

Dissertation/Dissertation.synctex.gz

Binary file modified.

Dissertation/Dissertation.tex

 Project Title:      & \bf Functional Reactive Programming for \\
 					& \bf Data Binding in C$\sharp$ \\
 Examination:        & \bf Computer Science Tripos Part II \\
-Word Count:         & \bf TBC \\
+Word Count:         & \bf 12,000 approx \\
 Project Originator: & Tomas Petricek \\
 Supervisor:         & Tomas Petricek \\
 \end{tabular}
 
 All the original goals were met: a general-purpose data binding framework based on arrows has been implemented, and an extensive arrow implementation has been completed. As well as the standard operators, a series of more complex extra operators has also been added, and some additional arrow types have been included -- for instance, `list arrows' which map between enumerable data types. The framework allows bindings in both directions, between multiple sources and multiple destinations, and the arrows can be used in conjunction with WPF data binding with reasonable ease.
 
-%TODO
-%Continue this?
-
 \section*{Special Difficulties}
 
 None
 
 Data binding presents a mechanism for bridging the gap between the separated layers by allowing the developer to specify that some value in the user interface code should be bound to a property of the model. This usually simply means that whenever the value in the model changes, the data binding framework will ensure that the value in the user interface is also updated to the same value. However, bindings can often be more complex: for instance, there could be a text box in the user interface which reflects backend data but can also be used to change it (two-way binding). Alternatively, there might be a user interface component whose value is determined by some function of a variable in the model - consider a list view which displays a filtered and sorted version of a list stored in the model. There could even be values which depend on multiple sources, or more complex many-to-many bindings.
 
-Many current languages and frameworks provide data binding features with varying levels of complexity. Java has a variety of extension libraries which allow the programmer to use data binding with Swing. Javascript too offers a number of possibilities, with a prominent example being the backbone.js MVC framework. Unfortunately, many of these are quite limited and difficult to use - backbone.js, for example, only provides one-way binding and requires a lot of boilerplate code from the programmer.
+Many current languages and frameworks provide data binding features with varying levels of complexity. Java has a variety of extension libraries (for example~\cite{bbb} and~\cite{beanfabrics}) which allow the programmer to use data binding with Swing. Javascript too offers a number of possibilities, with a prominent example being the backbone.js MVC framework~\cite{backbonejs}. Unfortunately, many of these are quite limited and difficult to use - backbone.js, for example, only provides one-way binding and requires a lot of boilerplate code from the programmer.
 
 \section{Data binding in .NET}
 
 
 \subsection{Simple arrows} \label{sec:simple_arrow_implementation}
 
-The first objective in implementing arrows was to get the simple function-based arrow working, as all the others derive from this. As mentioned earlier, it was implemented using the C$\sharp$ \texttt{Func<A, B>} class to hold its function. An \texttt{Invoke} method is then exposed for using the arrow.
+The first objective in implementing arrows was to get the simple function-based arrow working, as all the others derive from this. As mentioned earlier, it was implemented using the C$\sharp$ \texttt{Func<A, B>} class to hold its function. An \texttt{Invoke} method is then exposed for using the arrow. An arrow could therefore be considered a wrapper around a \texttt{Func}, but there are numerous advantages to this custom type. For instance, the \texttt{Arrow} type provides many combinators for building up more complex functions. These are then re-usable for special arrow types which may work slightly differently, as the arrow subtype need only re-implement the basic functions \texttt{arr}, \texttt{>>>} (composition) and \texttt{first} to be compatible with all the more complex operators. The simple \texttt{Func<A, B>} arrows are also only the simple case: invertible arrows, for instance, manage a function for each direction, and list arrows abstract away the lists they operate on letting the programmer concentrate on high-level operations like filtering and mapping. These advantage of implementing arrows rather than simply using \texttt{Func} objects came into play often throughout the project.
 
 While arrows can be constructed using \texttt{new Arrow<A, B>(function)}\footnote{\texttt{function} is a \texttt{Func<A, B>} here}, a simpler syntax is provided by an extension method:
 

Dissertation/Dissertation.toc

 \contentsline {subsection}{\numberline {3.2.1}Overview}{9}
 \contentsline {subsection}{\numberline {3.2.2}Simple arrows}{10}
 \contentsline {subsubsection}{Challenges encountered}{13}
-\contentsline {subsection}{\numberline {3.2.3}Invertible arrows}{14}
+\contentsline {subsection}{\numberline {3.2.3}Invertible arrows}{15}
 \contentsline {subsection}{\numberline {3.2.4}List arrows}{15}
-\contentsline {subsection}{\numberline {3.2.5}Further utility arrows}{16}
+\contentsline {subsection}{\numberline {3.2.5}Further utility arrows}{17}
 \contentsline {section}{\numberline {3.3}Data binding}{17}
 \contentsline {subsection}{\numberline {3.3.1}Overall architecture}{17}
 \contentsline {subsection}{\numberline {3.3.2}Creating bindable sources and destinations}{18}
 \contentsline {subsection}{\numberline {3.3.3}Creating bindings}{20}
 \contentsline {subsubsection}{Syntax and usage}{20}
 \contentsline {subsubsection}{Two-way binding}{21}
-\contentsline {subsubsection}{Cycle and conflict detection}{21}
+\contentsline {subsubsection}{Cycle and conflict detection}{22}
 \contentsline {subsubsection}{Many-to-many bindings}{23}
 \contentsline {subsubsection}{Problems encountered}{24}
 \contentsline {paragraph}{Type safety}{24}
-\contentsline {paragraph}{Binding to lists}{24}
+\contentsline {paragraph}{Binding to lists}{25}
 \contentsline {subsection}{\numberline {3.3.4}Integration work with WPF}{25}
 \contentsline {chapter}{\numberline {4}Evaluation}{27}
 \contentsline {section}{\numberline {4.1}Correctness of arrow implementations}{27}
 \contentsline {subsection}{\numberline {5.1.4}Syntax enhancements}{42}
 \contentsline {subsection}{\numberline {5.1.5}Performance}{42}
 \contentsline {section}{\numberline {5.2}Final words}{42}
-\contentsline {chapter}{\numberline {A}Arrow laws}{47}
-\contentsline {section}{\numberline {A.1}Normal arrow laws}{47}
-\contentsline {section}{\numberline {A.2}Invertible arrow laws}{48}
+\contentsline {chapter}{\numberline {A}Arrow laws}{48}
+\contentsline {section}{\numberline {A.1}Normal arrow laws}{48}
+\contentsline {section}{\numberline {A.2}Invertible arrow laws}{49}
 \contentsline {chapter}{\numberline {B}WPF integration demo -- code listings}{51}
 \contentsline {section}{\numberline {B.1}Creating the bindable source}{51}
 \contentsline {section}{\numberline {B.2}The binding arrow}{51}

Dissertation/texput.log

-This is pdfTeX, Version 3.1415926-2.3-1.40.12 (MiKTeX 2.9 64-bit) (preloaded format=pdflatex 2012.10.5)  9 MAY 2013 15:48
+This is pdfTeX, Version 3.1415926-2.3-1.40.12 (MiKTeX 2.9 64-bit) (preloaded format=pdflatex 2012.10.5)  12 MAY 2013 15:49
 entering extended mode
 **Bibliography.tex
 
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.