We propose a new extension to the purely functional programming language Haskell that supports compile-time meta-programming.
The purpose of the system is to support the algorithmic construction
of programs at compile-time.
The ability to generate code at compile time allows the programmer to implement such features as polytypic programs, macro-like
expansion, user directed optimization (such as inlining), and the
generation of supporting data structures and functions from existing data structures and functions.
Our design is being implemented in the Glasgow Haskell Compiler,
ghc.
%0 Journal Article
%1 Sheard2002Template
%A Sheard, Tim
%A Jones, Simon P.
%D 2002
%I ACM Press
%J ACM SIGPLAN Notices
%K 68n18-functional-programming-and-lambda-calculus 68n20-compilers-and-interpreters haskell 68n19-other-programming-paradigms
%N 12
%P 60--75
%R 10.1145/636517.636528
%T Template Meta-programming for Haskell
%U http://dx.doi.org/10.1145/636517.636528
%V 37
%X We propose a new extension to the purely functional programming language Haskell that supports compile-time meta-programming.
The purpose of the system is to support the algorithmic construction
of programs at compile-time.
The ability to generate code at compile time allows the programmer to implement such features as polytypic programs, macro-like
expansion, user directed optimization (such as inlining), and the
generation of supporting data structures and functions from existing data structures and functions.
Our design is being implemented in the Glasgow Haskell Compiler,
ghc.
@article{Sheard2002Template,
abstract = {{We propose a new extension to the purely functional programming language Haskell that supports compile-time meta-programming.
The purpose of the system is to support the algorithmic construction
of programs at compile-time.
The ability to generate code at compile time allows the programmer to implement such features as polytypic programs, macro-like
expansion, user directed optimization (such as inlining), and the
generation of supporting data structures and functions from existing data structures and functions.
Our design is being implemented in the Glasgow Haskell Compiler,
ghc.}},
added-at = {2019-03-01T00:11:50.000+0100},
author = {Sheard, Tim and Jones, Simon P.},
biburl = {https://www.bibsonomy.org/bibtex/2ce59a4100aa24c0b85027f55adc2b36a/gdmcbain},
citeulike-article-id = {1342},
citeulike-attachment-1 = {sheard_02_template.pdf; /pdf/user/gdmcbain/article/1342/1132772/sheard_02_template.pdf; 8e7439e7ec1d675b7adf1c734eb5a1a26218b548},
citeulike-linkout-0 = {http://portal.acm.org/citation.cfm?id=636528},
citeulike-linkout-1 = {http://dx.doi.org/10.1145/636517.636528},
day = 01,
doi = {10.1145/636517.636528},
file = {sheard_02_template.pdf},
interhash = {afa1222912501b8a8cc0949260d34e88},
intrahash = {ce59a4100aa24c0b85027f55adc2b36a},
issn = {03621340},
journal = {ACM SIGPLAN Notices},
keywords = {68n18-functional-programming-and-lambda-calculus 68n20-compilers-and-interpreters haskell 68n19-other-programming-paradigms},
month = dec,
number = 12,
pages = {60--75},
posted-at = {2018-03-26 05:29:41},
priority = {5},
publisher = {ACM Press},
timestamp = {2023-10-05T05:49:18.000+0200},
title = {Template Meta-programming for {H}askell},
url = {http://dx.doi.org/10.1145/636517.636528},
volume = 37,
year = 2002
}