- Timestamp:
 - Apr 25, 2019, 2:58:48 PM (7 years ago)
 - Branches:
 - ADT, arm-eh, ast-experimental, cleanup-dtors, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, pthread-emulation, qualifiedEnum
 - Children:
 - 052cd71, 1bc5975, c378e5e, cbef27b
 - Parents:
 - 98b4b12
 - Location:
 - doc/theses/aaron_moss_PhD/phd
 - Files:
 - 
      
- 3 edited
 
- 
          
  introduction.tex (modified) (1 diff)
 - 
          
  resolution-heuristics.tex (modified) (1 diff)
 - 
          
  thesis.tex (modified) (1 diff)
 
 
Legend:
- Unmodified
 - Added
 - Removed
 
- 
      
doc/theses/aaron_moss_PhD/phd/introduction.tex
r98b4b12 rbd405fa 42 42 Though the direction and experimental validation of this work is fairly narrowly focused on the \CFA{} programming language, the tools used and results obtained should be of interest to a wider compiler and programming language design community. 43 43 In particular, with the addition of \emph{concepts} in \CCtwenty{}~\cite{C++Concepts}, conforming \CC{} compilers must support a model of type assertions very similar to that in \CFA{}, and the algorithmic techniques used here may prove useful. 44 Much of the difficulty of type-checking \CFA{} stems from the language design choice to allow overload selection from the context of a function call based on function return type in addition to the type of the arguments to the call; this feature allows the programmer sto specify fewer redundant type annotations on functions that are polymorphic in their return type.44 Much of the difficulty of type-checking \CFA{} stems from the language design choice to allow overload selection from the context of a function call based on function return type in addition to the type of the arguments to the call; this feature allows the programmer to specify fewer redundant type annotations on functions that are polymorphic in their return type. 45 45 As an example in \CC{}: 46 46 \begin{C++}  - 
      
doc/theses/aaron_moss_PhD/phd/resolution-heuristics.tex
r98b4b12 rbd405fa 18 18 A comparison of the richer type systems in \CFA{} and \CC{} highlights some of the challenges in \CFA{} expression resolution. 19 19 The key distinction between \CFA{} and \CC{} resolution is that \CC{} uses a greedy algorithm for selection of candidate functions given their argument interpretations, whereas \CFA{} allows contextual information from superexpressions to influence the choice among candidate functions. 20 One key use of this contextual information is for type inference of polymorphic return types; \CC{} requires explicit specification of template parameters that only occur in a function's return type, while \CFA{} allows the instantiation of these type parameters to be inferred from context (and in fact does not allow explicit specification of type parameters to a function), as in the following example:20 One key use of this contextual information is for type inference of polymorphic return types; \CC{} requires explicit specification of template parameters that only occur in a function's return type, while \CFA{} allows the instantiation of these type parameters to be inferred from context (and in fact does not allow explicit specification of type parameters to a function), as in the following example: 21 21 22 22 \begin{cfa}  - 
      
doc/theses/aaron_moss_PhD/phd/thesis.tex
r98b4b12 rbd405fa 16 16 \usepackage{ifthen} 17 17 \newboolean{PrintVersion} 18 \setboolean{PrintVersion}{ true}18 \setboolean{PrintVersion}{false} 19 19 % CHANGE THIS VALUE TO "true" as necessary, to improve printed results for hard copies 20 20 % by overriding some options of the hyperref package below.  
  Note:
 See   TracChangeset
 for help on using the changeset viewer.