Changeset bd405fa


Ignore:
Timestamp:
Apr 25, 2019, 2:58:48 PM (5 years ago)
Author:
Aaron Moss <a3moss@…>
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
Message:

thesis: final edits

Location:
doc/theses/aaron_moss_PhD/phd
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • doc/theses/aaron_moss_PhD/phd/introduction.tex

    r98b4b12 rbd405fa  
    4242Though 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.
    4343In 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 programmers to specify fewer redundant type annotations on functions that are polymorphic in their return type.
     44Much 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.
    4545As an example in \CC{}:
    4646\begin{C++}
  • doc/theses/aaron_moss_PhD/phd/resolution-heuristics.tex

    r98b4b12 rbd405fa  
    1818A comparison of the richer type systems in \CFA{} and \CC{} highlights some of the challenges in \CFA{} expression resolution.
    1919The 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:
     20One 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:
    2121
    2222\begin{cfa}
  • doc/theses/aaron_moss_PhD/phd/thesis.tex

    r98b4b12 rbd405fa  
    1616\usepackage{ifthen}
    1717\newboolean{PrintVersion}
    18 \setboolean{PrintVersion}{true}
     18\setboolean{PrintVersion}{false}
    1919% CHANGE THIS VALUE TO "true" as necessary, to improve printed results for hard copies
    2020% by overriding some options of the hyperref package below.
Note: See TracChangeset for help on using the changeset viewer.