Results 1 -
4 of
4
Essential language support for generic programming
- In PLDI ’05
, 2005
"... “Concepts ” are an essential language feature needed to support generic programming in the large. Concepts allow for succinct expression of bounds on type parameters of generic algorithms, enable systematic organization of problem domain abstractions, and make generic algorithms easier to use. In th ..."
Abstract
-
Cited by 26 (4 self)
- Add to MetaCart
“Concepts ” are an essential language feature needed to support generic programming in the large. Concepts allow for succinct expression of bounds on type parameters of generic algorithms, enable systematic organization of problem domain abstractions, and make generic algorithms easier to use. In this paper we formalize the design of a type system and semantics for concepts that is suitable for non-type-inferencing languages. Our design shares much in common with the type classes of Haskell, though our primary influence is from best practices in the C ++ community, where concepts are used to document type requirements for templates in generic libraries. The technical development in this paper defines an extension to System F and a type-directed translation from the extension back to System F. The translation is proved sound; the proof is written in the human readable but machine checkable Isar language and has been automatically verified by the Isabelle proof assistant. This document was generated directly from the Isar theory files using Isabelle’s support for literate proofs.
Integrating Computer Algebra and Reasoning through the Type System of Aldor
, 2000
"... . A number of combinations of reasoning and computer algebra systems have been proposed; in this paper we describe another, namely a way to incorporate a logic in the computer algebra system Axiom. We examine the type system of Aldor { the Axiom Library Compiler { and show that with some modicat ..."
Abstract
- Add to MetaCart
. A number of combinations of reasoning and computer algebra systems have been proposed; in this paper we describe another, namely a way to incorporate a logic in the computer algebra system Axiom. We examine the type system of Aldor { the Axiom Library Compiler { and show that with some modications we can use the dependent types of the system to model a logic, under the Curry-Howard isomorphism. We give a number of example applications of the logic we construct and explain a prototype implementation of a modied type-checking system written in Haskell. 1 Introduction Symbolic mathematical { or computer algebra { systems, such as Axiom [13], Maple and Mathematica, are in everyday use by scientists, engineers and indeed mathematicians, because they provide a user with techniques of, say, integration which far exceed those of the person themselves, and make routine many calculations which would have been impossible some years ago. These systems are, moreover, taught as standar...
On Measuring and Optimizing the Performance of . . .
, 2007
"... With the introduction of support for “generic” style programming in mainstream languages, it is possible to write generic algorithms by using parametric polymor-phism. Parametric polymorphism can be expressed with templates in C++, generics in Java and C# and dependent types in Aldor. Generic code i ..."
Abstract
- Add to MetaCart
With the introduction of support for “generic” style programming in mainstream languages, it is possible to write generic algorithms by using parametric polymor-phism. Parametric polymorphism can be expressed with templates in C++, generics in Java and C# and dependent types in Aldor. Generic code is not as fast as specialized code, because the compilers usually do not make any optimizations based on the specific properties of the data used by the generic algorithm. In order to make generic code appealing, the performance of generic code must be similar to that of specialized code. First goal of this thesis is to understand what is the performance penalty for using generic code for scientific computing. Ideally, programmers should be able to write expressive programs while compilers should do the optimization. Most benchmarks implement algorithms as efficiently as possible by specializing the code for particular data sets and even performing some hand optimizations in the source code to eliminate the impact of wether certain optimizations are performed. We have implemented SciGMark, a benchmark with both generic and specialized code that shows us the
Emacs for Aldor: . . .
, 2006
"... In this thesis, I observed and established communications between Emacs, the external lexical analyzers, and the parser. There are two versions of the lexical analyzers: internal and external. The internal lexical analyzer was implemented in the programming language of Emacs-LISP. The core of the ex ..."
Abstract
- Add to MetaCart
In this thesis, I observed and established communications between Emacs, the external lexical analyzers, and the parser. There are two versions of the lexical analyzers: internal and external. The internal lexical analyzer was implemented in the programming language of Emacs-LISP. The core of the external lexical analyzer was implemented in Flex. For the parser, Bison and Flex were used. This thesis describes (1) details of each component; (2) comparisons of the difference between internal and external information processing; (3) experimental advantages and disadvantages of each version; (4) evaluations of the efficiencies based on running time, memory usage, features presentations, and other resources usage; (5) what needs to be done to achieve such communications; and (6) Aldor syntaxes and grammar.

