• Corpus ID: 45286521

Turing Scholars honors thesis Parametric Polymorphism in the Go Programming Language

@inproceedings{Allen2016TuringSH,
  title={Turing Scholars honors thesis Parametric Polymorphism in the Go Programming Language},
  author={Matthew Allen},
  year={2016}
}
An extension to the Go language was developed that introduces parametric polymorphism in the form of generic functions. The changes to the language and the compiler needed to implement the type system extensions are discussed, and alternative implementation strategies are described. The resulting implementation of generic functions is backwards compatible with the existing Go standard and is consistent with the design goals of the language. The overhead of the current prototype implementation… 

Figures and Tables from this paper

References

SHOWING 1-7 OF 7 REFERENCES
A Theory of Type Polymorphism in Programming
  • R. Milner
  • Computer Science
    J. Comput. Syst. Sci.
  • 1978
TLDR
This work presents a formal type discipline for polymorphic procedures in the context of a simple programming language, and a compile time type-checking algorithm w which enforces the discipline.
Design and implementation of generics for the .NET Common language runtime
TLDR
This paper extends the Microsoft.NET Common Language Runtime with direct support for parametric polymorphism (also known as generics), describing the design through examples written in an extended version of the C# programming language, and explaining aspects of implementation by reference to a prototype extension to the runtime.
Basic Polymorphic Typechecking
TLDR
This work is mostly interested in a particularly orderly form of polymorphism called parametric polymorphism, a property of programs which are parametric with respect to the type of some of their identifiers.
LLVM: a compilation framework for lifelong program analysis & transformation
  • Chris Lattner, V. Adve
  • Computer Science
    International Symposium on Code Generation and Optimization, 2004. CGO 2004.
  • 2004
TLDR
The design of the LLVM representation and compiler framework is evaluated in three ways: the size and effectiveness of the representation, including the type information it provides; compiler performance for several interprocedural problems; and illustrative examples of the benefits LLVM provides for several challenging compiler problems.
Generics in Java and C++: a comparative model
TLDR
This paper tries to analyze the implementation of the Java Generics and its comparison with the templates of C++, finding that C++ templates go a long way in enriching the multi-paradigm design philosophy.
Go at Google
  • R. Pike
  • Computer Science
    SPLASH '12
  • 2012
TLDR
Besides its better-known aspects such as built-in concurrency and garbage collection, Go's design considerations include rigorous dependency management, the adaptability of software architecture as systems grow, and robustness across the boundaries between components.
Efficiently computing static single assignment form and the control dependence graph
TLDR
New algorithms that efficiently compute static single assignment form and control dependence graph data structures for arbitrary control flow graphs are presented and it is given that all of these data structures are usually linear in the size of the original program.