Changeset bd405fa
- Timestamp:
- Apr 25, 2019, 2:58:48 PM (5 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
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.