270 lines
8.2 KiB
TeX
270 lines
8.2 KiB
TeX
%%
|
|
%% This is file `sample-acmsmall.tex',
|
|
%% generated with the docstrip utility.
|
|
%%
|
|
%% The original source files were:
|
|
%%
|
|
%% samples.dtx (with options: `acmsmall')
|
|
%%
|
|
%% IMPORTANT NOTICE:
|
|
%%
|
|
%% For the copyright see the source file.
|
|
%%
|
|
%% Any modified versions of this file must be renamed
|
|
%% with new filenames distinct from sample-acmsmall.tex.
|
|
%%
|
|
%% For distribution of the original source see the terms
|
|
%% for copying and modification in the file samples.dtx.
|
|
%%
|
|
%% This generated file may be distributed as long as the
|
|
%% original source files, as listed above, are part of the
|
|
%% same distribution. (The sources need not necessarily be
|
|
%% in the same archive or directory.)
|
|
%%
|
|
%%
|
|
%% Commands for TeXCount
|
|
%TC:macro \cite [option:text,text]
|
|
%TC:macro \citep [option:text,text]
|
|
%TC:macro \citet [option:text,text]
|
|
%TC:envir table 0 1
|
|
%TC:envir table* 0 1
|
|
%TC:envir tabular [ignore] word
|
|
%TC:envir displaymath 0 word
|
|
%TC:envir math 0 word
|
|
%TC:envir comment 0 0
|
|
%%
|
|
%%
|
|
%% The first command in your LaTeX source must be the \documentclass command.
|
|
\documentclass[acmsmall]{acmart}
|
|
|
|
%%
|
|
%% \BibTeX command to typeset BibTeX logo in the docs
|
|
\AtBeginDocument{%
|
|
\providecommand\BibTeX{{%
|
|
\normalfont B\kern-0.5em{\scshape i\kern-0.25em b}\kern-0.8em\TeX}}}
|
|
|
|
%% Rights management information. This information is sent to you
|
|
%% when you complete the rights form. These commands have SAMPLE
|
|
%% values in them; it is your responsibility as an author to replace
|
|
%% the commands and values with those provided to you when you
|
|
%% complete the rights form.
|
|
\setcopyright{acmcopyright}
|
|
\copyrightyear{2022}
|
|
\acmYear{2022}
|
|
\acmDOI{10.1145/1122445.1122456}
|
|
|
|
|
|
%%
|
|
%% These commands are for a JOURNAL article.
|
|
\acmJournal{JACM}
|
|
\acmVolume{37}
|
|
\acmNumber{4}
|
|
\acmArticle{111}
|
|
\acmMonth{8}
|
|
|
|
%%
|
|
%% Submission ID.
|
|
%% Use this when submitting an article to a sponsored event. You'll
|
|
%% receive a unique submission ID from the organizers
|
|
%% of the event, and this ID should be used as the parameter to this command.
|
|
\acmSubmissionID{123-A56-BU3}
|
|
|
|
%%
|
|
%% The majority of ACM publications use numbered citations and
|
|
%% references. The command \citestyle{authoryear} switches to the
|
|
%% "author year" style.
|
|
%%
|
|
%% If you are preparing content for an event
|
|
%% sponsored by ACM SIGGRAPH, you must use the "author year" style of
|
|
%% citations and references.
|
|
%% Uncommenting
|
|
%% the next command will enable that style.
|
|
%%\citestyle{acmauthoryear}
|
|
|
|
%%
|
|
%% end of the preamble, start of the body of the document source.
|
|
\begin{document}
|
|
|
|
%%
|
|
%% The "title" command has an optional parameter,
|
|
%% allowing the author to define a "short title" to be used in page headers.
|
|
\title{Efficient compilation of a functional Lisp based on Vau calculus}
|
|
|
|
%%
|
|
%% The "author" command and its associated commands are used to define
|
|
%% the authors and their affiliations.
|
|
%% Of note is the shared affiliation of the first two authors, and the
|
|
%% "authornote" and "authornotemark" commands
|
|
%% used to denote shared contribution to the research.
|
|
\author{Nathan Braswell}
|
|
\email{nathan.braswell@gtri.@gatech.edu}
|
|
%%\orcid{1234-5678-9012}
|
|
%%\author{G.K.M. Tobin}
|
|
%%\authornotemark[1]
|
|
%%\email{webmaster@marysville-ohio.com}
|
|
\affiliation{%
|
|
\institution{Georgia Tech}
|
|
%%\streetaddress{P.O. Box 1212}
|
|
\city{Atlanta}
|
|
\state{GA}
|
|
\country{USA}
|
|
%%\postcode{43017-6221}
|
|
}
|
|
|
|
%%\author{Lars Th{\o}rv{\"a}ld}
|
|
%%\affiliation{%
|
|
%% \institution{The Th{\o}rv{\"a}ld Group}
|
|
%% \streetaddress{1 Th{\o}rv{\"a}ld Circle}
|
|
%% \city{Hekla}
|
|
%% \country{Iceland}}
|
|
%%\email{larst@affiliation.org}
|
|
|
|
%%\author{Valerie B\'eranger}
|
|
%%\affiliation{%
|
|
%% \institution{Inria Paris-Rocquencourt}
|
|
%% \city{Rocquencourt}
|
|
%% \country{France}
|
|
%%}
|
|
|
|
%%\author{Aparna Patel}
|
|
%%\affiliation{%
|
|
%% \institution{Rajiv Gandhi University}
|
|
%% \streetaddress{Rono-Hills}
|
|
%% \city{Doimukh}
|
|
%% \state{Arunachal Pradesh}
|
|
%% \country{India}}
|
|
|
|
%%\author{Huifen Chan}
|
|
%%\affiliation{%
|
|
%% \institution{Tsinghua University}
|
|
%% \streetaddress{30 Shuangqing Rd}
|
|
%% \city{Haidian Qu}
|
|
%% \state{Beijing Shi}
|
|
%% \country{China}}
|
|
|
|
%%\author{Charles Palmer}
|
|
%%\affiliation{%
|
|
%% \institution{Palmer Research Laboratories}
|
|
%% \streetaddress{8600 Datapoint Drive}
|
|
%% \city{San Antonio}
|
|
%% \state{Texas}
|
|
%% \country{USA}
|
|
%% \postcode{78229}}
|
|
%%\email{cpalmer@prl.com}
|
|
|
|
%%\author{John Smith}
|
|
%%\affiliation{%
|
|
%% \institution{The Th{\o}rv{\"a}ld Group}
|
|
%% \streetaddress{1 Th{\o}rv{\"a}ld Circle}
|
|
%% \city{Hekla}
|
|
%% \country{Iceland}}
|
|
%%\email{jsmith@affiliation.org}
|
|
|
|
%%\author{Julius P. Kumquat}
|
|
%%\affiliation{%
|
|
%% \institution{The Kumquat Consortium}
|
|
%% \city{New York}
|
|
%% \country{USA}}
|
|
%%\email{jpkumquat@consortium.net}
|
|
|
|
%%
|
|
%% By default, the full list of authors will be used in the page
|
|
%% headers. Often, this list is too long, and will overlap
|
|
%% other information printed in the page headers. This command allows
|
|
%% the author to define a more concise list
|
|
%% of authors' names for this purpose.
|
|
%%\renewcommand{\shortauthors}{Trovato and Tobin, et al.}
|
|
|
|
%%
|
|
%% The abstract is a short summary of the work to be presented in the
|
|
%% article.
|
|
\begin{abstract}
|
|
Naively executing a language using Vau and Fexprs instead of macros
|
|
is slow.
|
|
\end{abstract}
|
|
|
|
%%
|
|
%% The code below is generated by the tool at http://dl.acm.org/ccs.cfm.
|
|
%% Please copy and paste the code instead of the example below.
|
|
%%
|
|
%%\begin{CCSXML}
|
|
%%<ccs2012>
|
|
%% <concept>
|
|
%% <concept_id>10010520.10010553.10010562</concept_id>
|
|
%% <concept_desc>Computer systems organization~Embedded systems</concept_desc>
|
|
%% <concept_significance>500</concept_significance>
|
|
%% </concept>
|
|
%% <concept>
|
|
%% <concept_id>10010520.10010575.10010755</concept_id>
|
|
%% <concept_desc>Computer systems organization~Redundancy</concept_desc>
|
|
%% <concept_significance>300</concept_significance>
|
|
%% </concept>
|
|
%% <concept>
|
|
%% <concept_id>10010520.10010553.10010554</concept_id>
|
|
%% <concept_desc>Computer systems organization~Robotics</concept_desc>
|
|
%% <concept_significance>100</concept_significance>
|
|
%% </concept>
|
|
%% <concept>
|
|
%% <concept_id>10003033.10003083.10003095</concept_id>
|
|
%% <concept_desc>Networks~Network reliability</concept_desc>
|
|
%% <concept_significance>100</concept_significance>
|
|
%% </concept>
|
|
%%</ccs2012>
|
|
%%\end{CCSXML}
|
|
|
|
%%\ccsdesc[500]{Computer systems organization~Embedded systems}
|
|
%%\ccsdesc[300]{Computer systems organization~Redundancy}
|
|
%%\ccsdesc{Computer systems organization~Robotics}
|
|
%%\ccsdesc[100]{Networks~Network reliability}
|
|
|
|
%%
|
|
%% Keywords. The author(s) should pick words that accurately describe
|
|
%% the work being presented. Separate the keywords with commas.
|
|
\keywords{partial evaluation, vau, fexprs, WebAssembly}
|
|
|
|
|
|
%%
|
|
%% This command processes the author and affiliation and title
|
|
%% information and builds the first part of the formatted document.
|
|
%%\maketitle
|
|
|
|
\section{Introduction and Motivation}
|
|
Vaus \cite{shutt2010fexprs} (at \url{https://web.wpi.edu/Pubs/ETD/Available/etd-090110-124904/unrestricted/jshutt.pdf})
|
|
All code available at \url{https://github.com/limvot/kraken}
|
|
|
|
\section{Prior Work}
|
|
\begin{itemize}
|
|
\item{} Axis of Eval rundown of attempted implmentations - \url{https://axisofeval.blogspot.com/2011/09/kernel-underground.html} \\
|
|
\item{} Lambda The Ultimate small discussion of partial eval for Vau/Kernel - \url{http://lambda-the-ultimate.org/node/4346} \\
|
|
\item{} Implementing a Vau-based Language With Multiple Evaluation Strategies - \cite{kearsleyimplementing} \\
|
|
Talks about how partial evaluation could make efficient, doesn't do it.
|
|
\item{} Google Groups email thread by Andres Navarro - \url{https://groups.google.com/g/klisp/c/Dva-Le8Hr-g/m/pyl1Ufu-vksJ} \\
|
|
Andres Navarro talks about his experimental fklisp which is a "very simple functional dialect of Kernel" with no mutation or first class continuations.
|
|
It doesn't compile anything, but prints out the partially evalauted expression. Was a work in progress, ran into performance problems, seems abandond.
|
|
\end{itemize}
|
|
|
|
\subsection{Issues}
|
|
Slow.
|
|
\section{Solution}
|
|
Purely functional.
|
|
Tricky partial evaluation.
|
|
|
|
\begin{verbatim}
|
|
((wrap (vau (let1)
|
|
|
|
(let1 lambda (vau se (p b1) (wrap (eval (array vau p b1) se)))
|
|
(lambda (n) (* n 2))
|
|
)
|
|
|
|
; impl of let1
|
|
)) (vau de (s v b) (eval (array (array vau (array s) b) (eval v de)) de)))
|
|
\end{verbatim}
|
|
|
|
\bibliographystyle{ACM-Reference-Format}
|
|
\bibliography{cited-paper}
|
|
|
|
\end{document}
|
|
\endinput
|
|
%%
|
|
%% End of file `sample-acmsmall.tex'.
|