bcp.bib
@PREAMBLE{{\newcommand{\SortNoop}[1]{}}}
@ARTICLE{tal-toplas,
AUTHOR = {Greg Morrisett and David Walker and Karl Crary and Neal Glew},
TITLE = {From {System-F} to Typed Assembly Language},
JOURNAL = {ACM Transactions on Programming Languages and Systems},
VOLUME = 21,
NUMBER = 3,
PAGES = {527--568},
MONTH = MAY,
YEAR = 1999
}
@INPROCEEDINGS{Cardelli88,
AUTHOR = {Luca Cardelli},
TITLE = {A semantics of multiple inheritance},
BOOKTITLE = {Semantics of Data Types},
YEAR = 1984,
PUBLISHER = {Springer-Verlag},
SERIES = {Lecture Notes in Computer Science},
VOLUME = 173,
EDITOR = {G. Kahn and D. MacQueen and G. Plotkin},
PAGES = {51--67},
SOURCE = {Cribbed from rwhbib, with (2/3) cribbed from elsewhere},
CHECKED = {Not checked},
NOTE = {Full version in \bgroup\em Information and
Computation\egroup, 76(2/3):138--164, 1988}
}
@INPROCEEDINGS{DAMAS82,
KEY = {Damas82},
AUTHOR = {Luis Damas and Robin Milner},
TITLE = {Principal Type Schemes for Functional Programs},
BOOKTITLE = {{ACM} {S}ymposium on {P}rinciples of {P}rogramming
{L}anguages ({POPL}), Albuquerque, New Mexico},
YEAR = {1982},
PAGES = {207--212},
SOURCE = {From ergobib},
CHECKED = {Not checked}
}
@INCOLLECTION{Howard80,
AUTHOR = {William A. Howard},
TITLE = {The formulas-as-types notion of construction},
BOOKTITLE = {To H. B. Curry: Essays on Combinatory Logic, Lambda
Calculus, and Formalism},
EDITOR = {J. P. Seldin and J. R. Hindley},
PUBLISHER = {Academic Press},
OPTADDRESS = {New York},
YEAR = 1980,
PAGES = {479--490},
NOTE = {Reprint of 1969 article}
}
@ARTICLE{Landin64,
AUTHOR = {Peter J. Landin},
TITLE = {The Mechanical Evaluation of Expressions},
JOURNAL = {Computer Journal},
VOLUME = 6,
NUMBER = 4,
MONTH = JAN,
YEAR = 1964,
PAGES = {308--320},
CHECKED = {5 June 1992, by JCR}
}
@INPROCEEDINGS{MoggiMonads89,
AUTHOR = {Eugenio Moggi},
TITLE = {Computational lambda-calculus and monads},
CHECKED = {Yes},
PAGES = {14--23},
BOOKTITLE = {IEEE Symposium on Logic in Computer Science (LICS), Asilomar, California},
MONTH = JUN,
YEAR = 1989,
NOTE = {Full version, titled {\em Notions of Computation and
Monads}, in Information and Computation, 93(1), pp. 55--92,
1991}
}
@INPROCEEDINGS{POPL::Necula1997,
TITLE = {Proof-Carrying Code},
AUTHOR = {George C. Necula},
PAGES = {106--119},
BOOKTITLE = {{ACM} {SIGPLAN--SIGACT} {S}ymposium on {P}rinciples of {P}rogramming
{L}anguages ({POPL}), Paris, France},
OPTMONTH = {15--17 } # JAN,
MONTH = JAN,
YEAR = {1997},
REFERENCES = {\cite{JACM::BoyerY1996} \cite{JACM::HarperHP1993}
\cite{APAL::MillerNPS1991} \cite{LICS::Pfenning1989}},
SOURCE = {popl bib}
}
@TECHREPORT{Plotkin:NatSemTR,
AUTHOR = {Gordon D. Plotkin},
TITLE = {A Structural Approach to Operational Semantics},
ADDRESS = {Aarhus, Denmark},
INSTITUTION = {Computer Science Department, Aarhus University},
YEAR = {1981},
MONTH = SEP,
NUMBER = {DAIMI FN--19}
}
@ARTICLE{Plotkin77,
AUTHOR = {Gordon D. Plotkin},
TITLE = {{LCF} Considered as a Programming Language},
JOURNAL = {Theoretical Computer Science},
YEAR = 1977,
VOLUME = 5,
PAGES = {223--255}
}
@PROCEEDINGS{LICS89,
TITLE = {Fourth Annual Symposium on Logic in Computer Science},
BOOKTITLE = {Fourth Annual Symposium on Logic in Computer Science
(Asilomar, CA)},
MONTH = JUN,
YEAR = 1989,
PUBLISHER = {IEEE Computer Society Press}
}
@INCOLLECTION{Dijkstra:60,
AUTHOR = {Edsger W. Dijkstra},
TITLE = {Recursive Programming},
BOOKTITLE = {Programming Systems and Languages},
PUBLISHER = {McGraw-Hill},
YEAR = 1960,
EDITOR = {Saul Rosen},
CHAPTER = {3C},
PAGES = {221-227},
ADDRESS = {New York}
}
@ARTICLE{Dijkstra68,
AUTHOR = {Edsger W. Dijkstra},
TITLE = {Go To Statement Considered Harmful},
JOURNAM = {Communications of the {ACM}},
VOLUME = 11,
NUMBER = 3,
MONTH = MAR,
YEAR = 1968,
PAGES = {147--148}
}
@ARTICLE{MCCARTHY60,
AUTHOR = {McCarthy, John},
TITLE = {Recursive Functions of Symbolic Expressions and Their Computation by Machine, Part {I}},
JOURNAL = {Communications of the ACM},
MONTH = {April},
NUMBER = {4},
VOLUME = {3},
YEAR = {1960},
PAGES = {184--195},
CHECKED = {27 July 1992}
}
@INPROCEEDINGS{Kowalski74,
AUTHOR = {Kowalski, Robert},
TITLE = {Predicate Logic as Programming Language},
BOOKTITLE = {IFIP Congress},
PLACE = {Stockholm},
YEAR = {1974},
PAGES = {569--574},
NOTE = {Reprinted in Computers for Artificial Intelligence
Applications, (eds. Wah, B. and Li, G.-J.), IEEE
Computer Society Press, Los Angeles, 1986, pp.~68--73}
}
@TECHREPORT{AITR-474,
AUTHOR = {Jr. Guy Lewis Steele},
TITLE = {{RABBIT}: {A} Compiler for {SCHEME}},
INSTITUTION = {MIT Artificial Intelligence Laboratory},
NUMBER = {AITR-474},
YEAR = {1978},
MONTH = MAY # {~6},
URL = {ftp://publications.ai.mit.edu/ai-publications/0-499/AITR-474.ps;
ftp://publications.ai.mit.edu/ai-publications/pdf/AITR-474.pdf},
OLDABSTRACT = {We have developed a compiler for the lexically-scoped
dialect of LISP known as SCHEME. The compiler knows
relatively little about specific data manipulation
primitives such as arithmetic operators, but
concentrates on general issues of environment and
control. Rather than having specialized knowledge about
a large variety of control and environment constructs,
the compiler handles only a small basis set which
reflects the semantics of lambda- calculus. All of the
traditional imperative constructs, such as sequencing,
assignment, looping, GOTO, as well as many standard
LISP constructs such as AND, OR, and COND, are
expressed in macros in terms of the applicative basis
set. A small number of optimization techniques, coupled
with the treatment of function calls as GOTO
statements, serve to produce code as good as that
produced by more traditional compilers. The macro
approach enables speedy implementation of new
constructs as desired without sacrificing efficiency in
the generated code. A fair amount of analysis is
devoted to determining whether environments may be
stack-allocated or must be heap- allocated.
Heap-allocated environments are necessary in general
because SCHEME (unlike Algol 60 and Algol 68, for
example) allows procedures with free lexically scoped
variables to be returned as the values of other
procedures; the Algol stack-allocation environment
strategy does not suffice. The methods used here
indicate that a heap- allocating generalization of the
{}
}